首先要说明,这套笔记不是我整理
有朋友知道原文出去麻烦告知一声,谢谢
Python基础(chapter3)
-
setence and syntax语句和语法
- #为注释符号
- \n是标准行分隔符, 通常一个语句一行
- 反斜线\表示下一行继续, 用来将单条语句放入多行…尽量使用括号代替
- 分号;表示将两个语句连接在一行中…不提倡
- 冒号:表示将代码块的头和体分开
- 语句(代码块)用缩进块方式体现: 同一个代码组的代码必须严格左对齐..由于不同的editor制表符宽度不一, 为了使代码跨平台, 推荐使用4个空格缩进
- 不同缩进深度分隔不同的代码块
- python文件以模块的形式组织: 模块以磁盘文件的形式存在, 不应该让某个模块充斥的太大
-
赋值
- 赋值语句没有返回值, 但可以使用链式赋值
- python2.0开始支持增量赋值(算符和等号连接赋值), 但是python不支持++, –
- 赋值操作中, 可变对象会被直接修改(引用位置值的修改), 不可变对象则被重新赋予新的对象(引用修改)
- 多元赋值: a, b, c = 1, 2, ‘string’, 建议使用tuple的方式进行多元赋值: (a, b, c) = (1, 2, ‘string’)
- swap操作: x, y = y, x
-
标识符
- 大小写敏感
- python的关键字列表和iskeyword()函数在keyword模块, 方便查阅
- 内建: built-in可以看作是系统保留字….对于一些内建函数需要覆盖(重定义, 替换)…built-in是__builtins__模块的成员, 该模块由解释器自动导入
- python不支持重载
-
下划线: 作为变量前缀和后缀指定特殊变量
- _xxx: 不用’from module import*’导入
- __xxx__: 系统定义名字
- _xxx: 类中的私有变量名
- python之禅
The Zen of Python, by Tim Peters
python之禅. 作者Tim Peters
Beautiful is better than ugly.
漂亮胜于丑陋
Explicit is better than implicit.
详尽胜于含蓄
Simple is better than complex.
简单胜于复杂
Complex is better than complicated.
组合胜于复杂(结构)
Flat is better than nested.
单一胜于嵌套
Sparse is better than dense.
稀少胜于繁杂
Readability counts.
可读性价值
Special cases aren’t special enough to break the rules.
特例不足以违反规则
Although practicality beats purity.
实践胜于理论
Errors should never pass silently.
错误可能从不沉默
Unless explicitly silenced.
除非明白沉默
In the face of ambiguity, refuse the temptation to guess.
面对歧义, 不被猜想诱惑
There should be one– and preferably only one –obvious way to do it.
可能仅有一种更好的方法
Although that way may not be obvious at first unless you’re Dutch.
Now is better than never.
现在胜于一切
Although never is often better than *right* now.
If the implementation is hard to explain, it’s a bad idea.
难于解释的实现是不好的
If the implementation is easy to explain, it may be a good idea.
易于明白的实现可能是个好方案
Namespaces are one honking great idea — let’s do more of those!
名空间是一个好方案, 让我们去超越这些
- 模块组织
# 起始行
# 模块文档
# 模块导入
# 变量定义
# 类定义
# 函数定义
# 主程序
- __name__用于指示模块应该如何被加载, 如果值是”__main__”说明是主模块, 如果是模块名, 说明是被导入的
- 主模块测试代码
# business process
if(__name__ == '__main__')
main()
-
内存管理
-
基本
- 弱类型 – 动态类型
- programmer不关心内存管理
- 变量并会被回收
- del语句能够直接释放资源
- 变量未初始化不允许使用
-
引用计数: 对于一个内存堆中的对象, 有多少个指针引用它..引用计数就是多少, 引用计数为0时, 该对象可以被垃圾回收器回收
-
增加
- 对象创建
- 别名创建(引用赋值)
- 参数传递(引用传值)
- 被容器引用
-
减少
- 引用生命周期结束
- 对象别名被显示销毁 del y
- 对象别名被赋予其他引用
- 窗口对象本身被销毁
-
del
- 从现在的名字空间中删除一个别名
- 对象的引用计数减一
-
增加
- 垃圾回收: 有对象引用计数为0, 对象被显示告知需要销毁, 有内存消耗大户存在导致系统压力较大时, 垃圾回收机制运行, 清理需要回收的内存区域…垃圾回收机制还有一个循环垃圾回收器, 确保释放循环引用对象(a引用b, b引用a, 导致其引用计数永远不为0)
-
基本
- 将引入的其他模块中常用的变量重新赋予一个本地别名(ls = os.linesep)不仅可以避免冗长的变量名, 又可以提高加载速度(因为现在是本地变量了)
-
重要的其他模块
- debugger: pdb允许设置断点, 逐行调试, 检查堆栈, 还支持事后调试
- logger: logging分紧急, 错误, 警告, 信息, 调试五级日志
-
profilers: 性能测试器
- profile: python编写, 测试函数执行时间, 每次脚本执行总时间.
- hotshot: python2.2, c编写, 解决了性能测试过载问题, 但需要更多时间生成结果, python2.5修正了hotshot的时间计量bug
- cProfile: python2.5, c编写, 需要较长时间从日志文件载入分析结果, 不支持子函数状态细节, 某些结果不准


不懂编程的路过。。。
捅捅好好学习
PyThon 好学吗?以前看过类似的文章。
@A.shun:…………………你强大shun。。。。。。。。
@禅宗少林:还行吧,学简单,学会很难,呵呵