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