模块,是一个python文件,以.py结束,包含了Python定义的对象和语句,模块中能定义函数,类和变量,也可以包括可以执行的语句,如print等。
任何Python的程序都可以作为模块导入。
模块的导入
import语句 在文件最开始的地方导入需要的模块 import module,moudle2........
调用时 模块名.函数名 则可以引用
当解释器遇到import语句时会先搜索路径,如果模块在当前搜索路径则会直接被导入,模块在导入的时候会执行其中的代码,但注意你无论导入多少次模块,其中的代码只会执行一次,这样可以避免模块一次一次的执行,因为模块并不是为了用来执行操作的比如打印其中的文本,模块是为了其中的定义、函数、变量、类等。只需要导入一次,就可以无限使用其中的方法。
from......import语句
from moudle import name,name1,name2....
导入模块的指定部分到当前的命名路径,也可以用来指定路径如:
from....import *语句
把一个模块的所有内容导入当前的命名空间
from moudle import *
这种方法简单的导入 模块中的所有内容,这种声明不提倡使用
搜索路径
让模块可用
1.将模块放在正确的位置
先要知道Python解释器去哪里查找模块,然后在将文件放在这里即可,可使用模块sys的变量path找到搜索路径的列表。
import sys print(sys.path) '''['C:\\Users\\zitian\\PycharmProjects\\Pr\\D3',当前路径 'C:\\Users\\zitian\\PycharmProjects\\Pr',pycharm内置方法回到了上个路径 'C:\\Users\\zitian\\AppData\\Local\\Programs\\Python\\Python36-32\\python36.zip',以下为sys内置搜索路径 'C:\\Users\\zitian\\AppData\\Local\\Programs\\Python\\Python36-32\\DLLs', 'C:\\Users\\zitian\\AppData\\Local\\Programs\\Python\\Python36-32\\lib', 'C:\\Users\\zitian\\AppData\\Local\\Programs\\Python\\Python36-32', 'C:\\Users\\zitian\\AppData\\Roaming\\Python\\Python36\\site-packages',]'''
每个路径代表一个位置,要让解释器找到位置,可以将模块放入其任何一个位置中,但目录
site-package是最佳的选择,因为它在python中本来就是用来防止模块的。把你的代码清单放入这里后,你在你的所有的程序中都可以去调用这个模块了
2.告诉解释器去哪找
将模块放入正确的位置可能并不适合所有的解决方案:
不希望解释器本身的package中充满你写的模块
没有必要的权限,无法将文件保存到解释器的目录中
想将模块放在其他的地方,而不是放在内置路径
如果想将模块放入其他的地方,必选告诉解释器去哪查找,办法之一就是直接修改sys.path,但这种做法不常见,标准做法是将模块的所在目录包含在坏境变量PYTHONPATH中。
环境变量
环境变量不是解释器的一部分,而是操作系统的一部分。他们类似于Python变量,但是是在Python解释器外设置的。
可以使用如下命令将~/python附加到环境变量PYTHONPATH末尾:
export PYTHONPATH=$PYTHONPATH:~/pyhon
如果要对所有启动的shell都执行这个命令,可将它添加到主目录中的.bashrc文件中。
包(package)
为组织模块,可将编组成包。包其实就是另一种模块,但它可以包含其他模块。模块储存在.py的文件中,而包则是一个目录。要python视为包,其中必须包括文件__init__文件。如果在普通模块中导入包,则会自动执__init__文件。
探索模块
模块中到底包含什么
1使用dir
它可以列出对象的所有属性
2变量__all__
导入所有不以下划线的名称
import copy print(dir(copy)) print(copy.__all__) print(copy.__file__) print(help(copy))
标准库
sys
模块sys能够访问解释器紧密相关的函数和变量,
1: sys是python自带模块.
利用 import 语句输入sys 模块。
当执行import sys后, python在 sys.path 变量中所列目录中寻找 sys 模块文件。然后运行这个模块的主块中的语句进行初始化,然后就可以使用模块了 。
2: sys模块常见函数
可以通过dir()方法查看模块中可用的方法. 结果如下, 很多我都没有用过, 所以只是简单介绍几个自己用过的方法.
$ python
Python 2.7.6 (default, Oct 26 2016, 20:30:19)
[GCC 4.8.4] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> dir(sys)
['__displayhook__', '__doc__', '__excepthook__', '__name__', '__package__', '__stderr__', '__stdin__', '__stdout__', '_clear_type_cache', '_current_frames', '_getframe', '_mercurial', '_multiarch', 'api_version', 'argv', 'builtin_module_names', 'byteorder', 'call_tracing', 'callstats', 'copyright', 'displayhook', 'dont_write_bytecode', 'exc_clear', 'exc_info', 'exc_type', 'excepthook', 'exec_prefix', 'executable', 'exit', 'flags', 'float_info', 'float_repr_style', 'getcheckinterval', 'getdefaultencoding', 'getdlopenflags', 'getfilesystemencoding', 'getprofile', 'getrecursionlimit', 'getrefcount', 'getsizeof', 'gettrace'