python核心编程读书笔记第三章
时间:2009-07-07 来源:mseaspring
1 语句和语法
核心风格:建议用4个空格代替TAB作为块分割。
赋值: python中,对象是通过引用传递的。在赋值给变量的时候,不管这个对象是新建的还是已经已经存在的,都是对该对象的引用(不是值)赋值给变量。python赋值是没有返回值的。
>>> x=1
>>> y=(x=x+1)
File "<input>", line 1
y=(x=x+1)
^
SyntaxError: invalid syntax
>>>
>>> y=x=x+1----------链式赋值支持
>>> x,y
(2, 2)
>>>
“多元赋值”:给多个变量同时赋值。
>>> x,y,z=1,2,'asss'
>>> x
1
>>> y
2
>>> z
'asss'
建议加上园括号增加可读性:(x,y,z)=(1,2,'a')
---
交换变量值:
>>> (x,y)=(1,2)
>>> x
1
>>> y
2
>>> (x,y)=(y,x)
>>> x
2
>>> y
1
>>>
2 标示符:
关键字列表通过iskeyword()放入可以keyword模块
>>> import keyword
>>> iskeyword()
Traceback (most recent call last):
File "<input>", line 1, in <module>
NameError: name 'iskeyword' is not defined
>>> print keyword.iskeyword()
Traceback (most recent call last):
File "<input>", line 1, in <module>
TypeError: __contains__() takes exactly one argument (0 given)
>>> print keyword.iskeyword('if')
True
>>>
built-in 是__builtins__模块的成员,可以看做任意python模块的全局变量,加以不要使用。
文档:pyhton通过__doc__特别变量动态获得,类,模块,函数,第一个没有赋值的字符串可以通过属性:obj.__doc__来进行访问。
python典型的内部结构图
每个模块中都最好用__name__=="__main__"来检查进行代码回归测试。
时刻记住:所有的模块都有能力执行python,没有缩进的代码行在模块被导入的时候会被执行,不管是不是真的要执行,都有这个特性,比较安全的方式几乎所有的功能代码都放到函数当中。
内存管理:
1 变量无须事先声明
2 程序员不用关心内存管理
3 变量名会被“回收”
4 del语句可以支持释放资源
动态类型: 对象的类型和占用的内存都是运行时候确定的。
内存管理: python解释器负责执行。
对象追踪: 采用引用计数的方式,为0时候,它被垃圾回收。
引用增加:
1 对象被创建:
x=3.14
2 或另外的别名被创建:
y=x
3 或被作为参数传递给函数(新的本地引用)
foobar(x)
4 或成为容器对象的一个元素:
mlist=[133,x,'xyz']
引用数减少:
1 对象销毁时候,引用计数会减少:引用离开作用范围,函数运行结束、
2 foo='xy' ====当对象“xy”被创建,它引用计数为1
bar=foo ====增加个别名,引用增加为2
foo=123 =====xy对象减一,自动变成1
3 对象别名被显式删除或销毁:
del y
4 对象的一个别名被赋值给其他对象:
x=123
5 对象从一个窗口对象中移除:
mylist.remove(x)
6 窗口对象本身被销毁:
del mylist
--------------------------------------------------------
y=‘x’
del y
del:1 从现有的名字空间删除y,x的引用会少1
========================================================
核心技巧:
使用局部变量替换模块变量:
1)查找更快速
2)减少输入
Debugger:pdb
Logger:logging
Profilers:profile,hotshot,cProfile
变量只有赋值和创建之后才可以使用。
- #号表示之后为python的注释
- 换行(\n)是标准的行分隔符(通常一个语句一行)
- 反斜线(\)继续上一行---引号内容可以跨行不用加\
- 分号(;)将2个句子连载一行
- 冒号(:)将代码块的头和体分开
- 语句(代码块)采用缩进块的方式体现
- python文件以模块的形式组织。
核心风格:建议用4个空格代替TAB作为块分割。
赋值: python中,对象是通过引用传递的。在赋值给变量的时候,不管这个对象是新建的还是已经已经存在的,都是对该对象的引用(不是值)赋值给变量。python赋值是没有返回值的。
>>> x=1
>>> y=(x=x+1)
File "<input>", line 1
y=(x=x+1)
^
SyntaxError: invalid syntax
>>>
>>> y=x=x+1----------链式赋值支持
>>> x,y
(2, 2)
>>>
“多元赋值”:给多个变量同时赋值。
>>> x,y,z=1,2,'asss'
>>> x
1
>>> y
2
>>> z
'asss'
建议加上园括号增加可读性:(x,y,z)=(1,2,'a')
---
交换变量值:
>>> (x,y)=(1,2)
>>> x
1
>>> y
2
>>> (x,y)=(y,x)
>>> x
2
>>> y
1
>>>
2 标示符:
- 第一字符必须是字母或下划线(_)
- 剩下的字符可以是字母或数字或下划线
- 大小写敏感
关键字列表通过iskeyword()放入可以keyword模块
>>> import keyword
>>> iskeyword()
Traceback (most recent call last):
File "<input>", line 1, in <module>
NameError: name 'iskeyword' is not defined
>>> print keyword.iskeyword()
Traceback (most recent call last):
File "<input>", line 1, in <module>
TypeError: __contains__() takes exactly one argument (0 given)
>>> print keyword.iskeyword('if')
True
>>>
built-in 是__builtins__模块的成员,可以看做任意python模块的全局变量,加以不要使用。
- _xxx 不用‘from module import *’导入
- __xxx__系统定义的名称
- __xxx 类的私有成员变量
文档:pyhton通过__doc__特别变量动态获得,类,模块,函数,第一个没有赋值的字符串可以通过属性:obj.__doc__来进行访问。
python典型的内部结构图
每个模块中都最好用__name__=="__main__"来检查进行代码回归测试。
时刻记住:所有的模块都有能力执行python,没有缩进的代码行在模块被导入的时候会被执行,不管是不是真的要执行,都有这个特性,比较安全的方式几乎所有的功能代码都放到函数当中。
内存管理:
1 变量无须事先声明
2 程序员不用关心内存管理
3 变量名会被“回收”
4 del语句可以支持释放资源
动态类型: 对象的类型和占用的内存都是运行时候确定的。
内存管理: python解释器负责执行。
对象追踪: 采用引用计数的方式,为0时候,它被垃圾回收。
引用增加:
1 对象被创建:
x=3.14
2 或另外的别名被创建:
y=x
3 或被作为参数传递给函数(新的本地引用)
foobar(x)
4 或成为容器对象的一个元素:
mlist=[133,x,'xyz']
引用数减少:
1 对象销毁时候,引用计数会减少:引用离开作用范围,函数运行结束、
2 foo='xy' ====当对象“xy”被创建,它引用计数为1
bar=foo ====增加个别名,引用增加为2
foo=123 =====xy对象减一,自动变成1
3 对象别名被显式删除或销毁:
del y
4 对象的一个别名被赋值给其他对象:
x=123
5 对象从一个窗口对象中移除:
mylist.remove(x)
6 窗口对象本身被销毁:
del mylist
--------------------------------------------------------
y=‘x’
del y
del:1 从现有的名字空间删除y,x的引用会少1
========================================================
核心技巧:
使用局部变量替换模块变量:
1)查找更快速
2)减少输入
Debugger:pdb
Logger:logging
Profilers:profile,hotshot,cProfile
变量只有赋值和创建之后才可以使用。
相关阅读 更多 +
排行榜 更多 +