python模块使用方法,每个模块用什么实现python
模块
如果您退出Python解释器,然后再次进入,您所做的定义(函数和变量)将会消失。所以,如果想写一些比较长的程序,最好用文本编辑器为解释器准备输入,然后以这个文件为输入运行程序。这也称为创建脚本。当你的程序变得更长时,你可能想把它分成几个文件以便于管理。您可能还想在几个程序中直接使用函数,而不是在每个程序中复制函数定义。
为了支持这个特性,Python可以将定义放在一个文件中,然后在脚本或交互式解释器实例中使用它。这个文件称为模块,模块中的定义可以导入到其他模块或主模块中(一组变量,可以在顶级和计算器模式下执行的脚本中访问)。
模块是包含Python定义和声明的文件。带后缀的模块名。py。在一个模块中,模块名(字符串类型)可以通过全局变量__name__获得。例如,使用您最喜欢的文本编辑器在当前目录下创建一个名为fibo.py的文件。该文件包含以下内容
#斐波那契数模块
DEF FIB (N) 3360 #打印Fibonacci数直到N。
a,b=0,1
whilean:
print(a,end= )
a,b=b,a b
打印()
DEF FIB2 (n) 3360 #返回n的斐波那契数。
结果=[]
a,b=0,1
whilean:
结果.追加(a)
a,b=b,a b
Return现在进入Python解释器,用下面的命令导入这个模块。
Importfibo不直接导入当前环境下fibo中定义的函数名,只导入名为fibo的模块。使用模块名获取模块中定义的函数:
纤维纤维(1000)
01123581321345589144233377610987
fibo.fib2(100)
[0,1,1,2,3,5,8,13,21,34,55,89]
菲波。__姓名_ _
如果你打算经常使用一个函数,你可以把它赋给一个局部变量。
fib=fibo.fib
纤维(500)
011235813213455
89144233377模块进阶
一个模块可以包含可执行声明包括函数定义。这些声明被用于初始化模块。它们只在模块被 第一 次导入时执行。 [1](如果文件被作为脚本运行它们也会被执行)
每个模块都有其私有的符号表,模块中定义的所有函数将这个符号表作为全局符号表。因此,一个模块的作者可以在模块中使用全局变量而无需担心与其他模块的全部变量冲突。另一方面,如果你知道你在干什么,你同样可以使用 模块.变量 的方式来获取一个模块的全局变量。
模块可以导入其他模块。将所有 import 语句放在模块(或者脚本,如果这个问题重要的话)的开头不是必须的,但习惯如此。被导入的模块名被放置于当前模块的全局符号表中。
import 声明的一种变体可以把一个模块中的变量直接导入当前模块的符号表中。例如:
>>>fromfiboimportfib,fib2这样做不会把模块名引入本地符号表中(因此上面的例子里,fibo没有被定义)>>>fib(500)
01123581321345589144233377
还有一种导入声明的变体可以导入一个模块中定义的所有变量:
>>>fromfiboimport*这会导入模块中除了以下划线(_)开头的所有名称。大多数情况下 Python 程序员不使用这个机制,因为它会为解释器引入一系列位置未知变量,从而有可能覆盖你已经定义的某些变量。>>>fib(500)
01123581321345589144233377
请注意,一般来说,使用 import * 导入模块或包是不受欢迎的,因为这通常会降低代码可读性。但在使用交互型解释器为了减少打字而使用它是允许的。
如果模块名后紧跟 as, 那么 as 后的变量名会与被导入的模块名绑定。
>>>importfiboasfib这与import fibo的方式导入相同,除了模块现在被命名为fib而不是fibo。>>>fib.fib(500)
01123581321345589144233377
使用from时可以使用这个机制达到相同的效果:
模块搜索路径
当一个名为 spam 的模块被导入时,解释器首先寻找同名的内建模块。如果没有发现同名内建模块,解释器会根据 sys.path 提供的一系列路径下寻找名为 spam.py 的文件。sys.path 根据下面这些位置进行初始化:
包含输入脚本的目录(如果没有指明文件则为当前目录)
PYTHONPATH 一个目录的列表,语法与 shell 的 PATH 变量相同。
安装依赖默认路径。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。