Python模块

Python模块

Python模块

  在本文中,您将学习在 Python中创建和导入自定义模块。此外,您会发现在 Python 中导入和使用自定义和内置模块的不同技术。

  Python模块是包含 Python 定义和语句的文件,以 .py 结尾。模块可以定义函数、和变量。模块还可以包含可运行的代码。将相关代码分组到一个模块中,使代码更易于理解和使用,它还使代码具有逻辑性。

Python模块

  在使用模块是会将大型程序分解为可管理和有组织的小文件。此外,模块提供了代码的可重用性。可以在一个模块中定义最常用的函数并导入它,而不是将它们的定义复制到不同的程序中。

# Python Module example

def add(a, b):
   """This program adds two
   numbers and return the result"""

   result = a + b
   return result

  在这里,我们晓得博客在名为example的模块中定义了一个add()函数 。该函数接受两个数字并返回它们的总和。

如何在 Python 中导入模块

  可以将模块内的定义导入到另一个模块或 Python 中的交互式解释器。可使用import关键字来做到这一点。在导入我们之前定义的模块example,在 Python 提示符中键入以下内容。

>>> import example

  这不会直接在当前程序中导入定义的函数的名称,只是在example那里导入模块名称。使用模块名称,我们可以使用点 . 运算符访问该函数。例如:

>>> example.add(4,5.5)
9.5

  Python有大量的标准Python模块。您可以查看Python 标准模块及其用例的完整列表。这些文件位于 Python 安装位置内的 Lib 目录中。可以像导入用户定义的模块一样导入标准模块。有多种方法可以导入模块。

Python模块导入语句

  我们可以使用该import语句导入一个Python模块,并使用上述的点运算符访问其中的定义。这是一个例子。

# import statement example
# to import standard module math

import math
print("The value of pi is", math.pi)

  当你运行程序时,输出将是:

pi 的值为 3.141592653589793

重命名导入

python-math模块

  我们可以通过如下重命名来导入模块:

# import module by renaming it

import math as m
print("The value of pi is", m.pi)

  我们已将math模块重命名为m. 在某些情况下,这可以节省我们的时间。请注意,math在我们的范围内无法识别该名称。因此,math.pi是无效的,m.pi是正确的实现。

Python from…import 语句

  我们可以从模块导入特定名称,而无需将模块作为一个整体导入。这是一个例子。

# import only pi from math module

from math import pi
print("The value of pi is", pi)

  在这里,我们只pimath模块导入了属性。在这种情况下,我们不使用点运算符。我们还可以导入多个属性,如下所示:

>>> from math import pi, e
>>> pi
3.141592653589793
>>> e
2.718281828459045

导入所有名称

python导入模块

  我们可以使用以下构造从模块中导入所有名称(定义):

# import all names from the standard module math

from math import *
print("The value of pi is", pi)

  在这里,我们从 math 模块导入了所有名称。这包括我们范围内可见的所有名称,但以下划线开头的名称(私有定义)除外。使用星号 (*) 符号导入所有内容并不是一个好的编程习惯。这可能导致标识符的重复定义,还妨碍了我们代码的可读性。

  在导入模块时,Python 会查看多个位置。解释器首先寻找内置模块。然后(如果未找到内置模块),Python 会查看sys.path. 搜索是按此顺序进行的。

  • 当前目录。
  • PYTHONPATH (带有目录列表的环境变量)。
  • 依赖于安装的默认目录。
>>> import sys 
>>> sys.path
['', 
'C:\\Python33\\Lib\\idlelib', 
'C:\\Windows\\system32\\python33.zip', 
'C:\\ Python33\\DLLs', 
'C:\\Python33\\lib', 
'C:\\Python33', 
'C:\\Python33\\lib\\site-packages']

  我们可以添加和修改这个列表来添加我们自己的路径。

重新加载模块

  Python 解释器在会话期间只导入一次模块。这使事情更有效率。这里有一个例子来说明这是如何工作的。假设我们在名为 的模块中有以下代码my_module

# This module shows the effect of
#  multiple imports and reload

print("This code got executed")

  现在我们看看多次导入的效果

>>> import my_module
This code got executed
>>> import my_module
>>> import my_module

  我们可以看到我们的代码只执行了一次。这意味着我们的模块只导入了一次。现在,如果我们的模块在程序运行过程中发生了变化,我们将不得不重新加载它。一种方法是重新启动解释器。但这并没有多大帮助。

  Python 提供了一种更有效的方法。我们可以使用模块reload()内部的函数imp来重新加载模块。我们可以通过以下方式做到:

>>> import imp
>>> import my_module
This code got executed
>>> import my_module
>>> imp.reload(my_module)
This code got executed
<module 'my_module' from '.\\my_module.py'>

dir() 内置函数

  可以使用该dir()函数找出模块内定义的名称。例如,我们add()在开始时的模块example中定义了一个函数。我们可以通过以下方式direxample模块中使用:

>>> dir(example)
['__builtins__',
'__cached__',
'__doc__',
'__file__',
'__initializing__',
'__loader__',
'__name__',
'__package__',
'add']

  在这里,我们可以看到一个排序的名称列表(以及add)。所有其他以下划线开头的名称都是与模块关联的默认 Python 属性(不是用户定义的)。例如,该__name__属性包含模块的名称。

>>> import example
>>> example.__name__
'example'

  可以使用dir()不带任何参数的函数找到我们当前命名空间中定义的所有名称。

>>> a = 1
>>> b = "hello"
>>> import math
>>> dir()
['__builtins__', '__doc__', '__name__', 'a', 'b', 'math', 'pyscripter']

  推荐:零基础如何开始学习Python

  推荐:Pycharm教程


晓得博客,版权所有丨如未注明,均为原创
晓得博客 » Python模块

转载请保留链接:https://www.pythonthree.com/python-module/

滚动至顶部