模块(模块)
什么是模块
一个. py文件就是一个模块(模块)。
在开发过程中我们不会把所有的代码都写在一个. py文件中。随着代码量的增大,可以按照功能将函数或者类分开存放到不同的py文件中。
这样代码更方便管理,以及后期的维护,也便于其他程序来调用当前已经实现的功能~
在开发过程中,我们也经常引用其他模块,例如:时间,操作系统,configparser、再保险等等
在Python中模块一般有如下3种:
1) Python内置模块
2)第三方模块
3)自定义模块
模块的导入
导入语句
导入模块的语句如下:
<代码>进口module1 [, module2 [,……moduleN] 或 进口module1 进口module2 … 进口moduleN 代码>
具体使用哪一种方式根据个人习惯而定,导入模块后,模块中的方法或者类可以通过模块名。方法()直接调用~
,<代码>祝辞的在比;导入的时间 在在在time.time() #()为时间模块中的方法 1545832129.4365451 在在在进口日期时间 在在在datetime.datetime.now () # datetime为datetime模块中的类 datetime。datetime(49 2018、12、26日,21日,2,805953)代码>
当我们使用导入语句导入模块时,Python解释器首先会去内置名称空间中寻找,即判断导入的模块是不是内置模块(例如时间模块就是Python内置模块),然后再去系统。路径列表中定义的路径从前往后寻找py文件
如下是在个人笔记本上输出的sys.path列表:
<代码> # pycharm中进行输出: ['/用户/宝贝/PycharmProjects untitled/模块”, “/用户/宝贝/PycharmProjects/untitled”, 地窖的/usr/地方//python/3.7.1/框架/Python.framework/版本/3.7/lib/python37.zip ', 地窖的/usr/地方//python/3.7.1/框架/Python.framework/版本/3.7/lib/python3.7 ', “/usr/地方/地窖/python/3.7.1/框架/Python.framework/版本/3.7/lib/python3.7/lib-dynload ', '/usr/地方/lib/python3.7/网站”, '//PyCharm.app/内容/应用助手/pycharm_matplotlib_backend ') #在终端进行输出: 在在在sys.path [",/usr/地方/地窖/python/3.7.1/框架/Python.framework/版本/3.7/lib/python37.zip ', 地窖的/usr/地方//python/3.7.1/框架/Python.framework/版本/3.7/lib/python3.7 ', “/usr/地方/地窖/python/3.7.1/框架/Python.framework/版本/3.7/lib/python3.7/lib-dynload ', “/usr/地方/lib/python3.7/网站”)代码>
-
<李>可以看到系统。路径在pycharm中的输出和在终端的输出略有区别,在pycharm中,pycharm会自动将当前项目的路径添加在系统。路径列表的最前面。所以若是在当前路径下存在与要引入模块同名的文件,就会把要引入的模块屏蔽掉~
系统。路径列表中其中一个路径下的文件如下:
<代码> ?~ ls/3.7/lib/python3.7/usr/local/Cellar/python/3.7.1/Frameworks/Python.framework/版本 许可证。txt fileinput。py re.py __future__。py:。py reprlib.py __phello__.foo。py格式化程序。py rlcompleter.py … 代码…>李>
进口的过程h5>
现在我自己编辑了一个模块sftp,内容如下:
<代码> server_ip=?92.168.0.30” def get_file (): 打印(“ddownload文件…”)代码>
然后在main.py文件(与sftp。py在同一个路径下)中进行导入:
<代码>进口sftp 代码>
在进口sftp时,Python解释器会首先创建一个新的名称空间,这个名称空间用于存放sftp模块中定义的名字,然后在该名称空间中执行sftp。py文件。
例如现在在sftp模块中添加打印语句,然后执行main.py文件:
<代码> # sftp.py server_ip=' 192.168.0.30 ' def get_file (): 打印(“ddownload文件…”) 打印(“你好....”) # main.py 进口sftp #执行主要。py后会有如下输出: 你好.... 代码>
导入语句可以理解为定义了一个变量,而该变量就指向对应的名称空间,通过使用这个变量来引用该名称空间中的方法及变量~
进口sftp之后,注意区分新创建的名称空间和当前的名称空间,示例如下:
<代码> # sftp.py server_ip=' 192.168.0.30 ' def get_file (): 打印(“ddownload文件…”) # main.py 进口sftp server_ip='为1.2.3.4 ' 打印(server_ip) 打印(sftp.server_ip) #执行主要。py后会有如下输出: 为1.2.3.4 192.168.0.30python模块与包的调用