5 模块
为了在其他程序中重用已经写好的代码,可以使用模块。模块就是个包含你要重用的函数和变量的python文件。
使用模块的方法:import module 或 from module import * (module为模块名)
使用import的时候,系统先在当前目录下查找模块,找不到时再去sys.path里所记录的路径下查找,其中sys为标准库模块,包含与Python解释器和它的环境有关的函数。因为系统module都存放在sys.path所记录的目录下,所以如果在当前目录下有和系统module重名的模块的话会优先调用当前目录下的模块,可能会导致一些错误的发生,所以命名module时要注意一些。
下面是一个调用sys模块的例子:
>>>import sys
>>>print sys.path
这个例子会输出sys.path变量的内容,其中点号表示path是sys模块中的变量,用同样的方式也可以表示模块中的函数,比如下面的module模块
#!/usr/bin/python
# Filename: mymodule.py
def sayhi():
print 'Hi, this is mymodule speaking.'
version = '0.1'
# End of mymodule.py
在模块中定义了一个叫sayhi的函数,调用的方法:
>>>import module
>>>module.sayhi()
模块的__name__属性
一般用于判断模块是否被单独运行,可以用if __name__ == ‘__main__’语句,如果是单独运行为True,否则就是被其他模块导入的。
dir()函数
dir()函数用于列出模块定义的标志符,包括函数、变量、类等。
dir(module) 返回module中的标志符,dir()返回当前所有模块中的标志符。
6 数据结构
python中有三种内置数据结构——列表、元组和字典
列表(list)
list类似C中的数组和C++中的vector,用于存储顺序结构数据,list的元素包括在方括号中,以逗号分割。
list的定义:a=[] 或 b=[1,2,'s'],list中的元素可以是包括list在内任何类型。
list的下标:list的下标从0开始,到n-1,如a[2]。但list也支持负数下标,-1表示最后一个元素,-n表示第1个元素。大于n-1或小于-n的下标会报错。
子list:可通过下标制定范围,提取子list,如a[1:4]表示a中第2到第5个元素。不指定的情况下起始默认为0,结束默认为-1,如a[:4],a[1:]等。子list是原来list的一个拷贝,改变子list不会改变原来的list。
list的处理方法:list.append(a)追加元素,len(list)返回长度,list.count(a)返回a出现的次数,list.sort()排序,list.insert(index,a)在index处插入元素a等等,具体方法参阅help(list)
list的解析:下例获得一个新的list,其每个元素是li中元素的2倍。
>>> li = [1, 9, 8, 4]
>>> [elem*2 for elem in li]
[2, 18, 16, 8]
>>> li
[1, 9, 8, 4]
用类似的格式可以解析字符串、字典等。
元组(tuple)
tuple是常量list,用()表示,一经定义,不可改变。
tuple可用于多个变量的赋值,如a,b=(1,2)。在元组中只有一个元素时应写成a=(1,),否则会被当成含括号的表达式处理。
tuple可用于格式化输出,如 print ‘%s is %d years old’ % (name, age) 其中%s表示字符串,%d表示整数。
字典(dict)
字典是键-值对的集合,以{}表示。
定义:a={key1:value1,key2:value2},其中的键值对是没有顺序的。
调用:a[key1]得到value1。
dict的方法:a.clear()清空a;a.copy()得到a的拷贝;a.get(key,default),返回a[key],不存在时返回default,default不写默认None;a.has_key(key) a中是否有键为key的,有返回value,无返回False。其他参加help(dict).
字符串(str)
字符串就是个所有元素都是字符的list,有很多实用的方法,参见help(str).