python学习(十) 自带电池
10.1 模块
>>> import math >>> math.sin(0) 0.0
10.1.1 模块是程序
假设自己写的hello.py放在c:\python目录中,下面的方法就是导入自己的模块:
import sys
sys.path.append('c:/python') // 假设自己的程序保存在 c:\python
import hello
如果hello模块被修改了,需要重新导入:
hello = reload(hello)
10.1.2 模块用于定义
10.1.3 让你的模块可用
如何让sys.path在一开始就包含正确的目录,两种方法:
一种是将模块放在合适的位置:
弊端:不希望自己的模块填满python解释器的目录 / 没有权限 / 想将模块放在其他地方。
>>> import sys, pprint >>> pprint.pprint(sys.path) ['', 'C:\\Program Files\\Python36\\Lib\\idlelib', 'C:\\Program Files\\Python36\\python36.zip', 'C:\\Program Files\\Python36\\DLLs', 'C:\\Program Files\\Python36\\lib', 'C:\\Program Files\\Python36', 'C:\\Program Files\\Python36\\lib\\site-packages']
另外是告诉解释器去哪找模块:
PYTHONPATH环境变量:
set PYTHONPATH = %PYTHONPATH%; C:\python
10.1.4 包
为了组织好模块,你可以将他们分组为包(package)。
当模块存储在文件中时(扩展名.py),包就是模块所在的目录。为了让python将其作为包对待,它必须包含一个名为__init__.py的文件。
10.2 探究模块
10.2.1 模块中有什么
dir:
>>> import copy >>> dir(copy) ['Error', '__all__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', '_copy_dispatch', '_copy_immutable', '_deepcopy_atomic', '_deepcopy_dict', '_deepcopy_dispatch', '_deepcopy_list', '_deepcopy_method', '_deepcopy_tuple', '_keep_alive', '_reconstruct', 'copy', 'deepcopy', 'dispatch_table', 'error'] >>>
__all__: 定义__all__, __all__会过滤掉不用的变量,函数和类。
10.2.2 用help获取帮助
>>> help(copy)
10.2.3 文档
>>> print(copy.__doc__)
10.2.4 使用源代码
>>> print(copy.__file__)
10.3 标准库:一些最爱
10.3.1 sys
与python解释器密切关联的变量和函数
argv
exit
modules
path
platform
stdin
stdout
stderr
10.3.2 OS
提供访问操作系统的方法
10.3.3 fileinput
10.3.4 集合、队和双端队列
10.3.5 time
10.3.6 random
10.3.7 shelve(简单的存储方案)
10.3.8 re(正则表达式的支持)
10.3.9 其他有趣的标准模块
functools:
difflib
hashlib
csv