- Python 脚本首行 P72
#! /usr/local/bin/python
or
#! /usr/bin/env python
- Windows 上输入的技巧 P77
input() 函数防止双击 py 文件执行时一闪而过
- 模块导入和重载 P81
>>> import script1
>>> from imp import reload
>>> reload(script1) # 重新加载无需再次 import 导入
- from myfile import title # 实际会复制一份 title 模块里的变量,与直接 import title 而言,变量名被复制到了当前命名空间,可能会变量名冲突
- dir(module_name) # 返回模块内部所有可用的变量名列表,返回对象的所有属性
- exec(open(‘module.py’).read()) # 运行某个 py 文件
- path=r’c:\python\test’ # 不需要转义,可用于 Windows 的路径 P117
- P129 Python 中字典是无序的,若需要访问时做到有序,那么可以把字典的 key 值单独放到一个列表中并对列表排序;每次访问字典时都从该列表取 key 值即可;或者使用 sorted() 函数:
>>> for key in sorted(D): print(D(key))
- 元组 Tuple 不可改变,可省略括弧,有两个独特函数:T.index(4) 元组中 4 的索引值是3;T.count(4) 元组中 4 的个数是1
>>> T = (1, 2, 3, 4)
- 读取文件:
>>> for line in open(r'./data.txt'): print(line)
- 自动回收未被引用的对象;变量是引用,是指向对象的指针,a 和 b 共享引用,指向同一个 3 对象
>>> a = 3
>>> a = 'spam'
>>> a = 3
>>> b = a
- 多个变量引用同一个对象时,可通过任意一个变量改变该对象,因为是共享引用,所以造成其他变量引用的对象(其实是同一个对象)发生了改变;若想不发生改变,可使用 copy 或 deepcopy P192
- 字符串分片
>>> 'spam'[1:3]
>>> 'spam'[slice(1, 3)]
>>> 'spam'[::-1] # 反转
>>> 'spam'[slice(None,None,-1)]
- 格式化字符串
>>> 'That is %d %s bird!' % (1, 'dead')
>>> 'That is {0} {1} bird!'.format(1, 'dead')
- 将字符串转换为可修改的列表,修改完后再转换为字符串
>>> S = 'spammy'
>>> L = list(S)
>>> L
['s', 'p', 'a', 'm', 'm', 'y']
>>> L[3] ='x'
>>> S = ''.join(L)
>>> S
'spaxmy'
- 字符串分割
>>> line = "I'mSPAMaSPAMlumberjack"
>>> line.split("SPAM")
- 基于字典的格式化表达式
>>> reply = """
Greetings..
Hello %(name)s!
Your age is %(age)s
"""
>>> values = {'name':'Bob', 'age':40}
>>> print(reply % values)
- P230 ‘first={0}, last={1}, middle={2}’.format(*parts) # *parts 解包一个元组的项作为单独的函数参数
- **data 是一种特殊语法,把一个由键值对组成的字典解包为一组组像 “name=value” 的关键字参数
- 列表推导
>>> L=[x**2 for x in range(5)]
>>> L
[0, 1, 4, 9, 16]
- 对比
类型 | 构造示例 | 序列一个包含其他对象的有序集合 | 不可变性创建后不能原位置改变 |
数字 | 略 | 否 | 是 |
字符串 | 略 | 是 | 是 |
列表 | [1, [2, ‘three’], 4.5]list(range(10)) | 是 | 否 |
字典 | {‘food’:’spam’, ‘taste’:’yum’}dict(hours=10) | 否 | 否 |
元组 | (1, ‘spam’, 4, ‘U’)tuple(‘spam’) == (‘s’, ‘p’, ‘a’, ‘m’) | 是 | 是 |
集合 | set(‘abc’){‘a’,’b’,’c’} | 否 | 否(不可变集合) |