标签:ja
第10章 充电时刻
10.1 模块
math cmath
>>> import math >>> math.sin(0) 0.0
10.1.1 模块是程序
cat hello.py
#!/usr/bin/env python #coding=utf-8 print "Hello ,world"
>>> import math >>> math.sin(0) 0.0
>>> import sys >>> sys.path.append(‘/root/python‘) #或者sys.path.expanduser(‘~/python‘) >>> import hello Hello ,world
导入模块的时候会生成pyc文件,下次导入的时候会导入.pyc文件,导入模块主要用于定义,比如变量、函数、类等,模块如果被导入,就不会被再次导入
即使执行import命令,这样做,可以避免循环导入,除非使用reload()
>>> reload(hello) Hello ,world <module ‘hello‘ from ‘/root/python/hello.pyc‘>
但是一般不建议使用relaod
10.1.2 模块用于定义
模块可以保持自己的作用域
1、加载模块中定义函数
cat hello2.py #!/usr/bin/env python #coding=utf-8 def hello(): print "Hello,world!"
>>> import hello2
这意味着hello函数在模块的作用域内被定义了,可以通过下面的方式来访问
>>> hello2.hello()
Hello,world!
我们可以通过同样的方法来使用任何模块的全局作用域中定义的名称
为了让代码重用,请将它模块化
2.在模块中增加测试代码
>>> __name__
‘__main__‘
>>> hello2.__name__
‘hello2‘
# cat hello3.py #!/usr/bin/env python #coding=utf-8 def hello(): print "Hello,world!" # test hello() >>> import hello3 Hello,world!
加入__name__==‘__main__‘的目的是让模块在被导入的时候不执行
# cat hello4.py #!/usr/bin/env python #coding=utf-8 def hello(): print "Hello,world!" def test(): hello() if __name__==‘__main__‘:test()
>>> import hello4 >>> hello4.hello() Hello,world! >>> hello4.test() Hello,world!
10.1.3 让你的模块可用
1、将模块放置在正确的位置
>>> import sys,pprint >>> pprint.pprint(sys.path) [‘‘, ‘/usr/lib64/python27.zip‘, ‘/usr/lib64/python2.7‘, ‘/usr/lib64/python2.7/plat-linux2‘, ‘/usr/lib64/python2.7/lib-tk‘, ‘/usr/lib64/python2.7/lib-old‘, ‘/usr/lib64/python2.7/lib-dynload‘, ‘/usr/lib64/python2.7/site-packages‘, ‘/usr/lib64/python2.7/site-packages/gtk-2.0‘, ‘/usr/lib/python2.7/site-packages‘, ‘/root/python‘]
/usr/lib64/python2.7/site-packages 是最好的选择
2、告诉编译器去哪里找
编辑sys.path
export PYTHONPATH="/Library/Python/2.7/site-packages:{$PYTHONPATH}"
路径配置文件 .pth 文件来实现
Python 在遍历已知的库文件目录过程中,如果见到一个 .pth 文件,就会将文件中所记录的路径加入到 sys.path 设置中,于是 .pth 文件说指明的库也就可以被 Python 运行环境找到了。
.pth 文件:import预计会被执行,#会被忽略
10.1.4 包
本文出自 “小鱼的博客” 博客,谢绝转载!
读书笔记--《Python基础教程第二版》--第十章 充电时刻
标签:ja
原文地址:http://395469372.blog.51cto.com/1150982/1974754