第3章 语法和程序设计风格
1. 语句和语法
a, #(注释),\n(换行符),\(表示续行),;(隔开同一行上的两条语句),:(分隔标题行及其后续字句),
b, 不使用反斜线字符实现语句续行:一是包容器对象中的元素在多行之间被断开;二是换行符包含在背阔在三个单引号之间的字符串之中
2. 变量分配
a, 赋值操作实际分配的是对该对象的引用线索;Python支持增量赋值,把一个对象赋值给多个变量,表列方式赋值。
3.标识符
a, 28个关键字。一套内建字。建议:最好不要用下划线作为标识符的起始字符
4.程序设计风格准则
a,文档。obj.__doc__动态检索文档字符串(模块,类定义或者函数定义的第一个未赋值字符串)
b,缩进(个人风格的选择)。但是注意:TAB在不同平台和不同文本编辑器上概念不同。慎用。
c,模块的结构和布局:启动语句行->模块文档->模块导入->变量定义->类定义->函数定义->程序主体。(注意利用__name__变量指示模块被加载方式)
5.内存管理
a,变量定义:变量及变量类型不必提前定义。对象在创建时(也就是在赋值时)先由解释器创建一个对象,它的类型是根据赋值语句右边的操作数所使用的语法来确定的。对象创建好以后,它的一个引用线索被赋值给赋值语句左边的变量。
b,程序员不必关心”内存管理“
6.Python的”废弃物回收“机制(让我想起了cocos2d-x的reatain和safe_release机制)
a,引用计数:跟踪记录每个对象身上有多少个引用。当一个对象被创建和(它的引用)被赋值时,它的初始引用记数是1
b,增加引用计数(为对象创建一个新的引用,又称别名):其他变量也被赋值到同一个对象,对象作为调用其他代码部分(比如函数,方法或者类的实例等)的参数被传递时;对象作为一个序列或映射图的成员被赋值时。
c,减少引用计数:明确地出现在del语句里;被赋值(重新赋值)为另外一个对象;超出作用范围。当引用计数减少至0的时候,该对象成为不可到达和不可访问的。
第四章 对象
1.Python中的对象
a,对象中的三种特性:实体(区分对象的标识符,id()可获得);类型(用type()可查);值
2.标准数据类型
a,标准数据类型(基本数据类型):四种数字类型,字符串,列表(list),表列(tuple),字典(dictionary)。与Java不同,标准类型不是类。
b,内建数据类型:类型(type),空类型(none),文件,函数,模块,类,类实例,方法
3.type类型和type()内建函数
a,把类型看做对象,定义对象所继承的一系列行为和特性
b,None类似于C中的NULL,Perl中的undef, Java中的Void型和null值。None没有任何属性,赋值为false。
4.内部数据类型
a,代码对象(code),框架(frame),跟踪记录(traceback),序列切片对象,Ellipsis对象,Xrange对象
b,标准类型的对象都可进行真假值检查以及和同类型的其他对象进行比较
c,Python中被定义为假值:None,任何形式的0值(0,0.0,0L,0.0+0.0j),对象为空(空字符串”“,空列表[],空表列(),空字典{})。其余的情况思维真值
d,类的实例:如果__nonzero__()或者__len__()返回零值,就认为假false。
5,标准操作符
a,字符串之间的比较为依次比较处于同一位置的字符,支持一个语句里使用多个比较,取值时按从左到右的顺序进行,等价于用and连接
b,对象实体比较:用is和is not 测试两个变量是否指向同一个对象
c,布尔表达式:and(交), or(并) 和not(否)
6,标准内建函数
a,cmp()返回值类似c中的strcmp()。repr()和‘’获得一个对象”正式“的字符串表示形式,效果一样。str()获取一个对象的可打印字符串表示形式。
突然发现Python核心编程第一版太老了,Python增加了很多类型。比如Boolean类型。要找Python第二版看看
附:
>>> dir(types)
['BooleanType', 'BufferType', 'BuiltinFunctionType', 'BuiltinMethodType', 'ClassType', 'CodeType', 'ComplexType', 'DictProxyType', 'DictType', 'DictionaryType', 'EllipsisType', 'FileType', 'FloatType', 'FrameType', 'FunctionType', 'GeneratorType', 'GetSetDescriptorType', 'InstanceType', 'IntType', 'LambdaType', 'ListType', 'LongType', 'MemberDescriptorType', 'MethodType', 'ModuleType', 'NoneType', 'NotImplementedType', 'ObjectType', 'SliceType', 'StringType', 'StringTypes', 'TracebackType', 'TupleType', 'TypeType', 'UnboundMethodType', 'UnicodeType', 'XRangeType', '__builtins__', '__doc__', '__file__', '__name__', '__package__']