>>> import sys >>> print sys.path 增加一个路径,但是只在本次启动 Python 有效 >>> sys.path.append("/usr/local/lib/python2.4/site-packages/opencv/") 另一个方法是,Windows系统变量 PYTHONPATH
注释使用 #
打印
3.0 版本
print([object, ...][, sep=' '][, end='\n'][, file=sys.stdout])
如果打印到文件,为 print(object,file=f)
字符串可以使用 ' '," ",''' '''
''' ''' 可以包含多行,换行符也在字符串里面
变量不用指定数据类型,由系统判断。
Every object has an identity, a type and a value. An object’s identity never changes once it has been created; you may think of it as the object’s address in memory. is 用于比较两个 object 的 identity.
Python 中,变量都是引用,因此将一变量赋值给另一变量是增加对同一块内存的 reference。
>>> li = ['z', 'h']
>>> ly = li
>>> li is ly
True
>>> li.append('t')
>>> ly
['z', 'h', 't']
>>> x=300
>>> y=x
>>> x is y
True
>>> x=400
>>> y
300
>>> x is y
False
>>>
>>> ly = li
>>> li is ly
True
>>> li.append('t')
>>> ly
['z', 'h', 't']
>>> x=300
>>> y=x
>>> x is y
True
>>> x=400
>>> y
300
>>> x is y
False
>>>
Python 中对象的含义是可以赋值给一个变量或作为一个参数传递给函数。这意味着并非所有对象都有属性和成员函数。
Everything in Python is an object, and almost everything has attributes and methods.
函数也是对象。
Module
一个文件对应一个 Module。Module 也是对象,它有一个属性是 __name__,如果是 import 这个 module,则 __name__ 是 module 的文件名,如果是直接运行,则为 __main__。所以可以用如下代码来调试 module。
if __name__ == "__main__":
有两种方式可以引入一个 module 的内容
import module
from module import sth
区别在于后一种引入资源成为局部变量,不用再前缀 module 名字。这种方法也用于仅引入 module 的部分内容。它的缺点是可能造成名字冲突。
因此 moudle 中的函数名最好不要和 module 名一样,如果一样function 会被认为 module
ps 如果是import module,则 用 module.function 应该也没问题
字符串格式化: "...%s...%d ..."% tuple
控制语句 if, for, while 后面不用加 ()
Built-in function: 在__builtin__ 中的函数,自动加载,不用 import 就可以使用
type() 可以用于任意 object,输出类型
str() 可以用于任意 object,转化为字符串
dir() 可以用于任意 object,输出一个list,包含该 object 的函数和属性
callable() 可以用于任意 object,判断是否可以调用getattr() 可以在运行期根据函数名找到起始地址,这样可以实现动态函数调用
getattr(object, name[, default]) 相当于 object.name
import statsout def output(data, format="text"): output_function = getattr(statsout, "output_%s" % format, statsout.output_text) return output_function(data)
list 过滤:[expression(elem) for elem in list if expression(elem)]
>>> [i**2 for i in [1,2,3,4]] [1, 4, 9, 16] >>> [(i**2, i**3) for i in [1,2,3,4]] [(1, 1), (4, 8), (9, 27), (16, 64)] >>> ['%d %d'%(i**2, i**3) for i in [1,2,3,4]] ['1 1', '4 8', '9 27', '16 64']以上几点的集大成就在如下语句
methodList = [method for method in dir(object) if callable(getattr(object, method))]
and-or trick 类似于 bool?a:b
普通版本 bool and a or b 安全版本 (bool and [a] or [b])[0]
Function on the Fly: lambda input: output
>>> g = lambda x: x*2 >>> g(3) >>> g=lambda x,y:x+y >>> g(2,5) 7
0 comments:
Post a Comment