模块导⼊的⼏种⽅式
概念
Python 模块是⼀个以 .py 结尾的 Python ⽂件,包含了 Python 对象定义和Python语句。每⼀个模块在python⾥都被看做是⼀个独⽴的⽂件。模块可以被别的程序引⼊,以使⽤该模块中的函数等功能,这也是使⽤ python 标准库的⽅法。
模块导⼊
模块可以导⼊其它模块,习惯上把所有 import语句放在模块的开头(不要求)。模块导⼊的⽅式有⼏种:
⽅式⼀:使⽤ import 语句来引⼊模块
import module1[, module2[,... moduleN]]
# 例如导⼊⼀个path模块
import path
直接使⽤关键词import,后⾯跟具体的模块名称,就可以导⼊某⼀个模块。同⼀个模块不管执⾏了多少次import,都只会被导⼊⼀次,以防⽌模块被⼀遍⼜⼀遍的执⾏。 模块引⼊好后,如果要调⽤模块中的函数,必须如下:
模块名.函数名
⽅式⼆:使⽤from…import 语句来引⼊模块
from modname import name1[, name2[, ... nameN]]
# 例如要导⼊pprint模块的pprint
from pprint import pprint
在使⽤import语句导⼊模块时会将整个模块引⼊进来,⽽使⽤import 语句则是从模块中导⼊⼀个指定的部分到当前命名空间中。如上⾯代码中则只会导⼊pprint模块中的pprint函数,其他函数并不会导⼊。
import语句引⼊模块后,如果需要使⽤模块⾥的函数⽅法,则需要加上模块的限定名字,⽽import语句则不⽤加模块的限定名字,直接使⽤其函数⽅法;
# 第⼀种⽅式
import pprint
pprint.pprint("hello world")
# 第⼆种⽅式
from pprint import pprint
pprint("hello world")
⽅式三:使⽤from…import* 语句来引⼊模块
from…import* 语句表⽰把⼀个模块的所有内容全都导⼊到当前的命名空间。
from modname import *
在多数情况下,Python程序员都不会使⽤这个功能,因为它在解释器中引⼊了⼀组未知的名称,⽽它们很可能会覆盖⼀些你已经定义过的东西。 注意通常情况下从⼀个模块或者包内调⼊ * 的做法是不太被接受的, 因为这通常会导致代码的可读性很差。不过,在交互式编译器中为了节省打字可以这么⽤。
模块的好处
⼤⼤提⾼了代码的可维护性;
代码不必从零开始,⼀个模块编写完毕之后,其他模块可以直接调⽤,节约了⼯作时间;
避免函数名称和变量名称重复,在不同的模块中可以存在相同名字的函数名和变量名,但是尽量不要和系统内置的模块名称重复;__name__属性
⼀个模块被另⼀个程序第⼀次引⼊时,其主程序将运⾏。如果我们想在模块被引⼊时,模块中的某⼀程序块不执⾏,我们可以
⽤__name__属性来使该程序块仅在该模块⾃⾝运⾏时执⾏。 每个模块都有⼀个__name__属性,当其值是'__main__'时,表明该模块⾃⾝在运⾏,否则是被引⼊。
if __name__ == "__main__":
import语句print("模块⾃⾝在运⾏")
模块搜索路径
搜索路径是由⼀系列⽬录名组成的,Python解释器就依次从这些⽬录中去寻所引⼊的模块。当⼀个模块被导⼊的时候,模块的搜索路径为:
程序的根⽬录
PYTHONPATH环境变量设置的⽬录
标准库的⽬录
任何能够到的.pth⽂件的内容
第三⽅扩展的site-package⽬录
PYTHONPATH 变量
PYTHONPATH是Python中⼀个重要的环境变量,⽤于在导⼊模块的时候搜索路径,可以通过如下⽅式访问:
import sys
sys.path
作为环境变量,PYTHONPATH 由装在⼀个列表⾥的许多⽬录组成。PYTHONPATH 的语法和 shell 变量 PATH 的⼀样。 在 Windows 系统,典型的 PYTHONPATH 如下:
set PYTHONPATH=c:\python37\lib;
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论