其它
- 使用帮助:在>>>下输入
help('')
- 字符串常量:单引号和双引号作用相同,三引号用于输出字符串块
- format函数:用来格式化字符串,代替printf
- Raw String:为字符串添加r前缀,告诉解释器不对字符串进行处理(如转义字符)
- Python中一切皆对象,包括数字,字符串和函数
- Python中没有switch语句
- :暗示下一个语句块的开始,而语句块的区分是以缩进的多少
- DocStrings:一个函数开头的字符串可作为该函数的文档,同样也可用于modules和classes。输出文档可以使用
print func_name.—__doc__
。该特性用在帮助文档中
Modules
- Module是一些函数的集合,使用Module的方式之一是创建.py文件,并使用
import
导入 -
sys.path
保存着Module的搜寻路径 - .pyc与.py的区别:.pyc是字节码形式,导入.pyc开销更小
-
from...import
:使用该语句导入的Module可以不加模块名,如可使用path - Every module has a name and statements in a module can find out the name of their module. This is handy for the particular purpose of figuring out whether the module is being run standalone or being imported. When a module is imported for the first time, the code it contains get executed.For Example
if __name__ == '__main__':
print 'This program is being run by itself'
else:
print 'I am being imported from another module'
-
dir()
函数用来列举一个对象定义的identifiers,如,对一个module来说,包括函数,类和变量 -
Packages
:用来组织module,实际上就是包含module的文件夹,但该文件夹内有一个特殊的文件init.py
Data Structures
Python有四种内置的数据结构—— list, tuple, dictionary and set
Tuple使用(),Tuple是不可变的,而List可变,如
zoo = ('python', 'elephant', 'penguin')
Dictionary就是键值对的集合,如
d = [key1:value1, key2:value2]
-
list, tuple, dictionary 都是Sequence,而Sequence支持如下三种操作
- membership tests
- indexing operations
- slicing
Set 如
bri = set(['brazil', 'russia', 'india'])
String也是对象,也有许多方便的方法
Object Oriented
- Class方法和函数的区别是,class方法会隐含的传入一个参数self,该参数指的是调用该方法的实例本身。(如同this之于Java) 所以说,Class方法定义时,至少有个参数self。
-
__init__
方法:类似于构造函数 - 类变量和实例变量:定义在所有方法之外的是类变量,方法内使用self修饰的是实例变量。
- 类函数与实例函数:利用
@classmethod
修饰的为类函数。
Input and Output
- 对象序列化:利用pickle模块
pickle.dump()
和pickle.load()
方法 - 当使用非英语字符时,在字符串前加
u
表示使用Unicode编码,此时相当于将strings类型转化成unicode类型,为了在互联网上传输字符串,还需要将unicode转化为能发送和接收的格式,这种格式为UTF-8 - 当程序中使用unicode字符串时,需要在程序的顶端添加
# encoding=utf-8
以告诉python我们所使用的是UTF-8
Exceptions
- 利用raise语句抛出异常
-
with
语句:在try
中获得一个资源,在finally
释放资源是一种很常见的编程模式,为了简化这种模式的书写,使用with
语句,这里在进入with
下的语句块时,会调用所获得对象的enter
方法,在离开语句块时,会调用对象的exit
方法。
Python Standard Library
- sys:contains system-specific functionality.
- logging:日志,调试
More
a, b = <some expression>
:将表达式的值分别指派给a, b(表达式返回一个tuple)-
special methods:可以为类定义一类特殊方法,这样方便对对象进行某些操作,如
- str(self):当打印对象时,调用此方法
- lt(self, other):比较对象时
- getitem(self, key):使用x[key]
Lambda Forms:
lamba
语句用来创建匿名函数,对于那些不方便起名又只使用一些的函数这种方法很方便,创建语法为lamba
take a parameter后跟一个表达式作为函数体,该表达式的值作为返回值。使用*和**使函数接受可变参数,*使用可变参数作为一个tuple传递给函数,**使得可变参数作为一个dict传递给函数
Decorators:a shortcut to apply wrapper functions。
Generator:一种一边循环一边计算的机制。如果一次生成所有元素会占据大量内存,它也是一种可迭代的对象,可以用在for循环中。在函数中,使用
yield
返回值就把函数定义为了一种生成器。对函数来说,每次调用next()
函数才执行,遇到yield
就中断。其执行顺序与一般函数不同。