(我们在名为utils的模块中定义了一个名为乘法的函数) https://m.toutiao.com/is/JE2UqX5/ 什么是python中的模块:假设您正在使用python解释器。您花了30分钟来定义一个函数,然后使用它并退出解释器。但是突然间,您记住仍然需要再次使用该功能。您再次输入它,但该功能的定义已消失。哎呀,好痛。 现在,您再次需要花费30分钟来键入相同的功能。因此,python有一种方法可以将该函数定义放入文件中并随时使用。 模块是ModuleType类型的对象。该模块基本上是一个python文件(扩展名为的文件.py),其中包含定义和语句(例如:类,函数,变量等)。Python中的模块为我们提供了逻辑上组织代码的灵活性。我们使用模块将大型程序分解为小的可管理文件。我们可以在模块中定义函数或类,然后使用来在其他模块中重用它们import。Python本身带有很多模块,例如数学,迭代工具,集合等。 示例:让我们创建一个模块。在文件中键入以下函数,并将其另存为utils.py。 ### utils.py def multiplication(a: int, b: int)-> int: '''This function will return the multiplication of two integers''' return a * b 因此,我们在名为utils的模块中定义了一个名为乘法的函数。 如何导入模块:我们可以使用关键字将模块内的定义导入另一个模块import。Python提供了两种导入模块的方法,如下所示:
示例:让我们将utils模块导入另一个名为 operations.py
当我们在操作模块中导入utils时,它不会直接将utils模块内部定义的对象加载到Operations模块中。相反,它将仅在当前模块名称空间中加载模块名称(utils)。要使用utils定义的函数或类,我们必须使用上面示例()中所示的表示法。如果您尝试直接使用乘法,则python会抛出如下所示的异常:dot (.)utils.multiplication(2, 4) >>> import utils>>> multiplication(2,3)Traceback (most recent call last): File '<stdin>', line 1, in <module>NameError: name 'multiplication' is not defined 如果要将特定功能或定义从模块导入其他模块,则必须使用from module_name import name。
注意:Python还允许我们使用as关键字为导入别名,如下所示:
例: ### operations.py# import utils as ufrom utils import multiplication as mul# result = u.multiplication (2,4)result = mul(2, 4)print(result)>>>8 注意:我们可以使用import *或from .. import *导入特定模块中的所有对象。 例:
注意:我们可以使用该dir()函数找出模块内定义的对象。 >>> import utils>>>dir(utils)['__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'multiplication'] 在这里,我们可以看到名称列表(以及乘法)。所有以下划线开头的名称都是与模块关联的默认Python属性。例如,__name__存储模块的名称并__file__存储其所在模块的路径。
python如何导入模块:Python使用了一个相对复杂的系统来查找和加载模块。该sys模块具有一些属性,这些属性定义Python将在哪里寻找模块。 Python在哪里寻找进口? >>> import sys>>> sys.path['', 'C:\\Users\\user\\Anaconda3\\python37.zip', 'C:\\Users\\user\\Anaconda3\\DLLs', 'C:\\Users\\user\\Anaconda3\\lib', 'C:\\Users\\user\\Anaconda3', 'C:\\Users\\user\\AppData\\Roaming\\Python\\Python37\\site-packages', 'C:\\Users\\user\\Anaconda3\\lib\\site-packages', 'C:\\Users\\user\\Anaconda3\\lib\\site-packages\\win32', 'C:\\Users\\user\\Anaconda3\\lib\\site-packages\\win32\\lib', 'C:\\Users\\user\\Anaconda3\\lib\\site-packages\\Pythonwin'] 因此,当我们导入模块时,python会查看sys.path列表。如果在这些路径之一中未找到该模块,则它将引发一个ModuleNotFoundError。 有多种方法可以确保在运行Python时目录始终位于Python sys.path列表中,包括:
概括地说,这就是Python导入模块的方式:
注意:导入模块时,将执行模块代码。 导入模块时会发生什么
最后多说一句,小编是一名python开发工程师,这里有我自己整理的整套python学习资料和路线,想要这些资料的都可以关注小编,并私信“01”领取。 |
|
来自: 山峰云绕 > 《Python代码知识游戏黑客编程与英语》