《Python核心编程》第3章笔记

  • A+
Categories:Python

语句和语法
# Python注释
\ 继续上一行(有两种例外情况一个语句不能使用反斜杠也可以跨行。在使用闭合操作符时,单一语句可以跨多行,例如:在含有小括号、中括号、花括号时可以多行书写。另外就是三引号包括下的字符串也可以跨行书写)
: 多个语句构成代码组(代码组由不同的缩进分隔,推荐使用4个空格宽度缩进,避免使用制表符)
; 同一行书写多个语句
\n 是标准的行分隔符(通常一个语句一行)
语句(代码块)用缩进块的方式体现
不同的缩进深度分隔不同的代码块
Python文件以模块的形式组织

变量赋值
= (普通赋值)
增量赋值(数学运算隐藏在赋值过程中)相对普通赋值不仅仅是写法上的改变,最有意义的变化是第一个对象仅被处理一次。可变对象会被就地修改

多重赋值

“多元”赋值(multuple)

标识符:Python标识法字符串规则和其他大部分用C编写的高级语言相似:
合法标识符:
第一个字符必须是字母或者下划线(_)
剩下的字符可以是字母和数字或者下划线
大小写敏感

Python关键词
and as assert break clas continue def del elif else except exec finally
for from global if import in is lambda not or pass print raise return
try while with yield None

内建:python可以在任何一级代码使用的“内建”的名字集合,这些名字可以由解释器设置或使用。

专用下划线标识符:python用下划线作为变量前缀和后缀指定的特殊变量。如下总结:
_xxx 不用 ‘from module import *’ 导入
__xxx__ 系统定义名字
__xxx 类中的私有变量名
注:避免用下划线作为变量名的开始

内存管理
变量和内存管理的细节包括:
变量无需事先声明
变量无需指定类型
程序员不用关心内存管理
变量名会被“回收”
del语句能够直接释放资源

1)变量定义:python无需显式变量声明语句,变量在第一次被赋值时自动声明。和其他大多数语言一样,变量只有被创建和赋值后才能被使用。
2)动态类型:python中不但变量名无需事先声明,而且也无需类型声明,在程序中,对象的类型和内存所占用的都是运行时确定的。尽管代码被编译成字节
码,python仍然是一种解释型语言。在创建也就是赋值时,解释器会根据语法和右侧的操作数来决定新对象的类型,在对象创建后,一个该对象的应用会被赋
值给左侧的变量。
3)内存分配:Python解释器承担了内存管理的复杂任务, 这大大简化了应用程序的编写。你只需要关心你要解决的问题,至于底层的事情放心交给 Python 解释器去做就行了
4)引用计数:Python中使用了引用计数这一简单技术,一个内部跟踪变量称为一个引用计数器,当这个对象不再需要时,这个对象的引用计数为0时,它被垃圾回收。
对象的引用计数增加的情况:
对象被创建
或另外的别名被创建
或被作为参数传递给函数
或称为容器对象的一个元素

对象的引用计数减少的情况:
一个本地引用离开了其作用范围。
对象的别名被显式的销毁
对象的一个别名被赋值给其他的对象
对象被从一个窗口对象移出
窗口对象本身被销毁

del 语句
del语句会删除对象的一个引用,语法:del obj1[, obj2[, ....objN]],例如:del y会产生两个结果(1)从现在的名字空间中删除y(2)改对象的引用对象减1。

5)垃圾收集:Python 的垃圾收集器实际上是一 个引用计数器和一个循环垃圾收集器。 当一个对象的引用计数变为
0,解释器会暂停,释放掉这个对象和仅有这个对象可访问(可到达)的其它对象。作为引用计数的补充,
垃圾收集器也会留心被分配的总量很大(及未通过引用计数销毁的那些)的对象。在这种情况下, 解释器会暂停下来, 试图清理所有未引用的循环。

相关模块和开发工具
调试器:pdb
记录器:logging(Python2.3中新增的,定义了一些函数和类帮助你的程序实现灵活的日志系统。共有五级日志级别:紧急、错误、警告、信息和调试)
性能测试器:
profile:模块是Python写成的,用来测试函数的执行时间及每次脚本执行的总时间
hotshot:模块式在Python2.2中新增的,它的目标是取代profile模块,它修复了profile模块的一些错误,用C语言写成,所以它有效的提高了性能,重点解决了性能测试过载的问题
cProfile:模块式Python2.5新增的,它用来替换掉已经有历史的hotshot和profile模块。它的一个较明显的缺点是它需要花较长时间从日志文件中载入分析结果,不支持子函数状态细节及某些结果不准,用C语言来实现的

Tue Mar 19 17:48:55 CST 2013

Comment

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: