Python常见问题汇总

变量赋值

<1>赋值操作符 =
Python语言中,等号(=)是主要的赋值操作符。
<2>增量赋值x += 1 (不支持x++)
<3>多重赋值x = y = z = 1
<4>多元赋值 x, y = 1, 2

问0:如果x=1的话,那么x变量里面保存的就是数值1咯?
答:不不不,x里面保存的是1的地址,相当于x的变量是贴到1这个地址上的。

问1:为什么有变量,为什么要有变量赋值?
答:我的想法是,如果数字1存储在 内存地址 0x7FFFFF0000 中,如果每次都要写 0x7FFFFF0000 岂不是很麻烦 ,那么就简单一点我们起个变量名叫x 岂不美哉。

问2: 如何看待Python语言中,对象是通过引用传递的?
答:这个问题和问题0是差不多的,Python赋值语句会把对象值存储在变量名或者数据结构的元素中,赋值语句总是建立对象的引用值,而不是复制对象,因此Python变量更像是指针,而不是数据存储区域。

标识符

<1> 合法的Python标识符
第一个字符必须是字母或者下划线
剩下的字符可以是字母和数字或下划线
大小写敏感

<2>关键字
语言的标识符,保留字

<3>内建
不是保留字,但是不推荐使用

<4>.专用下划线标识符
_xxx 不用 "from module import *" 导入
xxx 系统定义名字
_xxx 类中的私有变量名

问3:如何看待Python中单下划线和双下划线的区别?
name:一种约定,Python内部的名字,用来与
用户自定义的名字区分开,防止冲突
_name:一种约定,用来指定变量私有
__name:解释器用_classname__name来代替这个名字用以区别和其他类相同的命名

想要更加详细的了解这两者的区别,请点击:Python中的下划线(译文)

基本风格指南

问:什么是PEP8?
答:一种Python编码风格指导规范。

内存管理

•无需变量实现声明
•无需变量指定类型
•不用关心内存管理
•变量名会被回收
•del 语句能够直接释放资源

<1>变量定义
变量在第一次被赋值的时会自动声明
<2>动态类型
解释器会根据语法和右侧的操作数来决定对象的类型
<3>内存分配
交给Python
<4>引用计数
•增加引用计数
x = 3
y = x

•减少引用计数
x = 3
y = x
x = 4

•del语句
会删除对象的一个引用
•垃圾收集
垃圾收集器会寻找引用计数为0的对象。

问4:Python的垃圾回收机制是一种怎样的体验?
答:
引用计数为主,标记-清除和分带为辅
引用计数: 引用计数为0,内存释放。
标记-清除 容器对象 引用循环 定时回收
分代收集 划分三代

想要知道Python垃圾回收机制的详细情况 请点击:深入分析 Python 的垃圾回收机制

问5:如何评价引用计数?
答:
引用计数为0时,该对象生命就结束了。
引用计数机制的优点:
1、简单
2、实时性:一旦没有引用,内存就直接释放了。不用像其他机制等到特定时机。实时性还带来一个好处:处理回收内存的时间分摊到了平时。
引用计数机制的缺点:
1、维护引用计数消耗资源
2、循环引用
举个例子
1 list1 = []
2 list2 = []
3 list1.append(list2)
4 list2.append(list1)

list1与list2相互引用,如果不存在其他对象对它们的引用,list1与list2的引用计数也仍然为1,所占用的内存永远无法被回收,这将是致命的。
对于如今的强大硬件,缺点1尚可接受,但是循环引用导致内存泄露,注定python还将引入新的回收机制。
所以说就有了 标记-清除 和 分代收集

标记-清除 主要是要清除哪种情况呢?
答:“标记-清除”是为了解决循环引用的问题。
就是上面那种情况.

分代收集 主要是为了解决哪种情况呢?
答: 将系统中的所有内存块根据其存活时间划分为不同的集合,每一个集合就成为一个“代”,垃圾收集的频率随着“代”的存活时间的增大而减小。也就是说,活得越长的对象,就越不可能是垃圾,就应该减少对它的垃圾收集频率。

其它:
Python性能优化20条建议

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,406评论 6 503
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,732评论 3 393
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,711评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,380评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,432评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,301评论 1 301
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,145评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,008评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,443评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,649评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,795评论 1 347
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,501评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,119评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,731评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,865评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,899评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,724评论 2 354

推荐阅读更多精彩内容

  • 一、python 对象 Python 使用对象模型来存储数据,构造的任何类型的值都是一个对象(比如我们创建的整数:...
    常大鹏阅读 4,621评论 0 17
  • 变量赋值 <1>赋值操作符 =Python语言中,等号(=)是主要的赋值操作符。<2>增量赋值x += 1 (不支...
    TimLee1996阅读 335评论 1 0
  • 〇、前言 本文共108张图,流量党请慎重! 历时1个半月,我把自己学习Python基础知识的框架详细梳理了一遍。 ...
    Raxxie阅读 18,954评论 17 410
  • http://python.jobbole.com/85231/ 关于专业技能写完项目接着写写一名3年工作经验的J...
    燕京博士阅读 7,575评论 1 118
  • 前言在参考官方的翻译文档时, 很多语句的翻译的还有点生硬, 而且我在学的过程中有些地方读起来很吃力, 我相信也会有...
    孟婆汤不解渴阅读 5,471评论 0 1