当前位置: 首页 > 图灵资讯 > 行业资讯> 初学者必看的Python模块讲解

初学者必看的Python模块讲解

发布时间:2025-09-28 11:07:39

模块

如果你从 Python 解释器退出并进入,您的定义(函数和变量)将消失。因此,如果你想写一些更长的程序,你最好使用一个文本编辑器来准备输入解释器,然后使用这个文件作为输入来操作程序。这也被称为创建一个脚本。当你的程序变长时,你可能想把它分成几个文件来管理它。你也可能想直接在几个程序中使用函数,而不是在每个程序中复制函数定义。

为支持这一特性,Python 将定义放入文件中,然后在脚本或交互式解释器实例中使用。该文件称为模块 (module),模块中的定义可以导入到其他模块或主模块中(可以访问的变量集合可以在顶层和计算器模式下执行的脚本中)。

一个模块是一个包含 Python 定义和声明文件。文件是模块名加上.py后缀。在模块中,模块名(字符串类型)可以通过全局变量__name__获取。例如,使用您最喜欢的文本编辑器在当前目录下创建一个名为fibo的文本编辑器.py文件包含以下内容

#斐波那契数模块

deffib(n):#印刷斐波那契直到n
a,b=0,1
whilea<n:
print(a,end='')
a,b=b,a+b
print()

deffib2(n):#返回n的斐波那契数
result=[]
a,b=0,1
whilea<n:
result.append(a)
a,b=b,a+b
returnresult

现在进入 Python 解释器通过下面的命令导入该模块

>>>importfibo

在当前环境下,fibo中定义的函数名不会直接导入,只会导入名为fibo的模块。模块中定义的函数可以通过使用模块名获得:

>>>fibo.fib(1000)
01123581321345589144233377610987
>>>fibo.fib2(100)
1、1、2、3、5、8、13、24、55、89
>>>fibo.__name__
'fibo'

如果你打算经常使用一个函数,你可以给它一个局部变量

>>>fib=fibo.fib
>>>fib(500)
01123581321345589144233377

模块进阶

一个模块可以包含可执行的声明,包括函数定义。这些声明用于初始化模块。它们只在模块中 第一 二次导入时执行。 [1](如果文件作为脚本运行,它们也将被执行)

每个模块都有自己的私有符号表,模块中定义的所有函数都将该符号表作为全球符号表。因此,模块的作者可以在不担心与其他模块的所有变量冲突的情况下,在模块中使用全球变量。另一方面,如果你知道你在做什么,你也可以使用它 模块.变量 获取一个模块的全局变量的方法。

所有模块都可以导入其他模块。 import 在模块(或脚本,如果这个问题很重要)的开头不是必要的,但习惯了。导入的模块名被放置在当前模块的全局符号表中。

import 声明的变体可以将模块中的变量直接导入当前模块的符号表。例如:

>>>fromfiboimportfib,fib2
>>>fib(500)
01123581321345589144233377

这样做不会在本地符号表中引入模块名(所以在上面的例子中,fibo没有定义)

导入声明的另一个变体可以导入模块中定义的所有变量:

>>>fromfiboimport*
>>>fib(500)
01123581321345589144233377

除以下划线(_)开头的所有名称外,还将导入模块。在大多数情况下, Python 程序员不使用这种机制,因为它会在解释器中引入一系列未知的位置变量,这可能会覆盖你已经定义的一些变量。

请注意,一般来说,使用 import * 导入模块或包并不流行,因为它通常会降低代码的可读性。但允许使用交互式解释器来减少打字。

假如模块名后跟着 as, 那么 as 后变量名将与导入的模块名绑定。

>>>importfiboasfib
>>>fib.fib(500)
01123581321345589144233377

这与import有关 除了模块现在被命名为fib而不是fibo外,fibo的导入方式也是如此。

这种机制在使用from时可以达到相同的效果:

模块搜索路径

当一个名为 spam 当导入模块时,解释器首先寻找同名内部建筑模块。如果没有发现同名内部建筑模块,解释器将根据 sys.path 在提供的一系列路径下寻找名称 spam.py 的文件。sys.path 根据以下位置进行初始化:

包含输入脚本的目录(如果没有指定文件,则为当前目录)

PYTHONPATH 目录列表、语法和 shell 的 PATH 变量相同。

依靠默认路径进行安装。

相关文章

Python的高级特性:容易忽略的不可变类型

Python的高级特性:容易忽略的不可变类型

2025-09-28
一篇文章教你如何使用Python生成器

一篇文章教你如何使用Python生成器

2025-09-28
小白必看的Python函数讲解

小白必看的Python函数讲解

2025-09-28
初学者必看的Python模块讲解

初学者必看的Python模块讲解

2025-09-28
Python中reduce函数和lambda表达式的学习

Python中reduce函数和lambda表达式的学习

2025-09-26
Python小白必学的面向对象

Python小白必学的面向对象

2025-09-26