python文件格式
第一行指定脚本运行环境的python路径(可选)
第二行指定文件编码
需要添加模块注释(一个文件就是一个模块),方便使用 __doc__
调取
需要为每个函数与类添加注释,使用三引号,方便使用 __doc__
调取
使用四个空格的缩进,不需要花括号
#!/Users/nizhenyang/Python_Envs/python2.7/bin/python
# -*- coding:utf-8 -*
"""this is a test module"""
def test():
"""test is a test function"""
pass
class TestClass (object):
"""TestClass is a test class"""
pass
# 使用这个语句判断其是否为主模块
if __name__ == '__main__':
foo = TestClass()
test()
获取模块与方法的帮助
• module.__doc__
• func.__doc__
• dir(module)
• help(module)
• help(func)
python中变量为对对象的引用
变量只是一个对对象的引用,类似于c中的指针,只不过其可以指向任何对象的地址
使用 id()
获取对象的地址
num = 2
var1 = num
var2 = num
print "id(var1): %d, id(var2): %d, %s" % (id(var1), id(var2), id(var1) == id(var2))
# id(var1): 140354092286448, id(var2): 140354092286448, True
print var1 is var2
# True
使用 copy.deepcopy
进行深复制
python的核心数据类型
- 数字 int long float complex bool
- 字符 str unicode
- 列表 list
- 字典 dict
- 元祖 tuple
- 文件 file
- 集合 set frozenset
- 类类型
- None
- 管道 pipes fifos
- sockets
数据类型之间的转换
• str() repr() format(): * –> string (注:str是给人用的,repr是给编译器用的 eval)
• int() float(): * –> number
• list(): string –> list
• tuple(): string –> tuple
• set(): string –> set
• dict(d): (k, v)序列 [(‘a’, 1), (‘b’, 2), (‘c’, 3)]
• chr(): int –> char
• ord(): char –> int
• hex(): int –> 十六进制
• bin(): 二
• oct(): 八
number之间的一些运算
• 4.2 // 1.2 计算出的结果不包括小数
• 1 ^ 2 异或
• 1 ** 2 乘方
• 1 & 2 按位与运算
• ^ 1 取反
• 1 | 2 按位或运算
• math 内建模块
number科学计数输出
num = 4.6
print "%f, %e, %g" % (num, num, num)
# 4.600000, 4.600000e+00, 4.6
string的相关使用
使用unicode:在文件开始处加上# -*- coding:utf-8 -*
或在字符串前加’u’ u'共产党万岁'
对字符串进行切片
str = '0123456789'
print str[:]
print str[1:4]
print str[1:]
print str[1::3]
print str[-5:]
print str[-1::-1]
# 输出结果
#0123456789
#123
#123456789
#147
#56789
#9876543210
一些常用方法
• 首字母大写
• str.capitalize()
• 子串首先出现的位置
• str.index()
• 连接 “”.join([1,2,3,4])
• str.join()
• 替换
• str.replace()
• 划分
• str.split()
• trim
• str.strip()
序列类型 list tuple set
通用方法
• 切片
• len()
• min()
• max()
• sum()
• all()
• any()
• +
• *
• in
• not in
可变序列的用通用操作
• s[i]=v 元素复制
• s[i:j] = t 切片赋值
• del s[i]
• del s[i:j]
• del s[i:j:stride]
list
容器类型,通过索引访问,可变对象,异构,任意嵌套
• append() 添加
• extend() 原处扩展列表
• insert() 插入
• pop() 按索引删除
• remove() 按元素删除
• range(10) ==> [0, 1, …. 8, 9]
• 复制 list ll[:] | copy.deepcopy()
tuple
与list相似,但是不可变,长度固定 支持切片
元祖本身不可变,但是其中嵌套的可变
set
一组无序排列的可哈希的值,支持集合关系测试 交并补差,不支持索引,元素获取,切片,没有特定语法格式,只能通过工厂函数创建
• s.copy
• s.difference 差集
• s.intersection & 交集
• s.symmetric_difference() ^ 对称差
• s1 | s2 并集
• pop
dict
键值组合,关联数组,散列表
len(dict) 字典中元素的个数
dd = {}
• 清空 d1.clear()
• 复制 d2 = d1.copy()
• 获取 d1.get(k) : 无异常抛出 比较 d1[k]
• 判断是否有key d1.has_key(k)
• 键值为元祖的列表 d1.items() t1, t2 = d1.items() - pack
• 键列表,值列表 d1.keys() d1.values()
• 随机弹出键值映射 d1.popitem()
• 类似于extend d1.update()
• 迭代器 ddd = d1.iteritems() ddk = d1.iterkeys()
• 显示构造 d1.viewitems() d1.viewkeys() d1.viewvalues-
• 快速构建字典 zip : dict(zip(‘xzy’, ‘123’)) ==> {‘y’: ‘3’, ‘x’: ‘1’, ‘z’: ‘2’}