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’}