文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>python核心编程读书笔记第三章

python核心编程读书笔记第三章

时间:2009-07-07  来源:mseaspring

1 语句和语法
  •  #号表示之后为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

变量只有赋值和创建之后才可以使用。
相关阅读 更多 +
排行榜 更多 +
鹰眼IV

鹰眼IV

飞行射击 下载
火柴人史诗射手

火柴人史诗射手

飞行射击 下载
10发子弹安卓版

10发子弹安卓版

飞行射击 下载