PHP2Python 基本语法精要
写在前面的话: http://www.meegoq.com/home-space-uid-18-do-blog-id-34.html
下一篇: PHP2Pythoh Python语法精要
特殊字符:
# 后为注释
python中仅有行注释,无多行注释
\n 为标准行分隔符
\ 继续上一行
有两种情况不用 \ 就可以换行, 一种是 """ 注释,还有一种就是括号
; 将两个语句连在一行中
: 将代码块的头和体分开
代码规则
代码块 以缩进的方式体现
不同的缩进深度分隔不同的代码块
Python文件以模块的方式组织
变量赋值
python中赋值一般都是将引用赋值给变量
python中赋值语句并不会返回值(区别于C)
- y = (x = x + 1 ) #错误
python中支持多重赋值
- y = x = x + 1 #正确
python不支持 x++ 或者 --x 的操作
python支持多元赋值
- x, y, z = 1, 2, 'a string'
- x, y = y, x
标识符
python中大小写敏感
关键字
python的关键字不断发展
关键字列表和iskeyword()函数都放入了keyword模块以便查询
专用下划线标识符
_xxx 私用变量,模块外不可使用
__xxx__ 系统定义名字
__xxx 类中私有变量名
文档
Python 还提供了一个机制,可以通过__doc__特别变量,动态获得文档字串。在模块,类声明,或函数声明中第一个没有赋值的字符串可以用属性 obj.__doc__来进行访问,其中 obj是一个模块,类,或函数的名字。这在运行时刻也可以运行。
模块布局
- #/usr/bin/env python #类unix系统下的起始行.有了该行,可以直接输入脚本名称来执行脚本,而无需调用解释器
- "this is a test module" #简要介绍模块的功能及重要全局变量的含义,模块外可通过 module.__doc__ 访问这些内容。
- import sys #导入当前模块的代码需要的所有模块;
- import os
- debug = True #这里定义的变量为全局变量,本模块中的所有函数都可直接使用。
- class FooClass (object): #所有的类都需要在这里定义。当模块被导入时 class 语句会被执行, 类也就会被定义。
- "Foo Class" #类的文档变量是 class.__doc__。
- pass #如果先写类结构,不准备写代码,可以使用pass占位,否则解释器会报错
- def test():
- "test function" #函数的文档变量是 function.__doc__
- foo = FooClass()
- if debug:
- print "ran test()"
- if __name__ == "__main__": #如果当前模块是作为主模块执行,就执行下面的代码,否则不执行
- test() #非常适合用来作单元测试
变量定义与动态类型
基本与php相同
内存分配
python使用引用计数的方式记录各个对象有多少个引用
当使用赋值或传参的方式传递给另外一个变量或函数时,对象的引用加1
- x = 3.14
- y = x
- foobar(x)
- myList = [123, x, 'xyz']
引用减少
1. 当变量同赋值给另外一个对象时,原对象的引用计数 -1
- foo = 'xyz'
- bar = foo
- foo = 123 # 'xyz'对象引用减1
2. 使用 del 操作符
3. 一个本地引用离开其作用范围 (通常在函数执行后,作用域中的临时变量引用销毁)
4. 对象从一个窗口对象中销毁
myList.remove(x)
5. 窗口对象本身被销毁
del myList
del操作
del 语句会删除对象的一个引用,它的语法是: del obj1[, obj2[,... objN]]
del 语句也会删除该对象的最后一个引用,这样该对象就是不可访问的了,成为垃圾收集的对象
垃圾收集
Python 的垃圾收集器实际上是一个引用计数器和一个循环垃圾收集器。可以防止出现两个对象循环引用而不能被回收的情况.
作为引用计数的补充, 垃圾收集器也会留心被分配的总量很大(及未通过引用计数销毁的那些)的对象。