Python模块用法最全面的剖析

本文概述

  • 例子
  • 在我们的python代码中加载模块
  • import语句
  • 例子
  • 导入语句
  • 重命名模块
  • 例子
  • 使用dir()函数
  • 例子
  • reload()函数
  • 变量范围
  • 例子
  • Python包
可以将python模块定义为python程序文件, 其中包含python代码, 包括python函数, 类或变量。换句话说, 我们可以说以扩展名(.py)保存的python代码文件被视为模块。我们可能在python模块中有一个可运行的代码。
Python中的模块为我们提供了以逻辑方式组织代码的灵活性。
要将一个模块的功能用于另一个模块, 我们必须导入特定的模块。
例子 【Python模块用法最全面的剖析】在此示例中, 我们将创建一个名为file.py的模块, 其中包含一个函数func, 该函数包含在控制台上打印一些消息的代码。
让我们创建名为file.py的模块。
#displayMsg prints a message to the name being passed. def displayMsg(name) print("Hi "+name);

在这里, 我们需要将此模块包含到主模块中, 以调用在名为file的模块中定义的方法displayMsg()。
在我们的python代码中加载模块 我们需要在python代码中加载模块以使用其功能。 Python提供了以下两种类型的语句。
  1. import语句
  2. 导入语句
import语句 import语句用于将一个模块的所有功能导入另一个模块。在这里, 我们必须注意, 通过将该文件作为模块导入到另一个python源文件中, 我们可以使用任何python源文件的功能。
我们可以用一个import语句导入多个模块, 但是一个模块被加载一次, 而不管它被导入文件中的次数是多少。
下面给出了使用import语句的语法。
import module1, module2, ........ module n

因此, 如果我们需要调用文件file.py中定义的函数displayMsg(), 则必须将该文件作为模块导入到我们的模块中, 如下例所示。
例子
import file; name = input("Enter the name?") file.displayMsg(name)

输出
Enter the name?John Hi John

导入语句 python无需将整个模块导入名称空间, 而是提供了仅导入模块的特定属性的灵活性。可以通过使用from来完成?import语句。下面提供了使用from-import语句的语法。
from < module-name> import < name 1> , < name 2> .., < name n>

考虑以下名为” 计算” 的模块, 其中包含三个功能:求和, 乘法和除法。
calculation.py:
#place the code in the calculation.py def summation(a, b): return a+b def multiplication(a, b): return a*b; def divide(a, b): return a/b;

Main.py:
from calculation import summation #it will import only the summation() from calculation.py a = int(input("Enter the first number")) b = int(input("Enter the second number")) print("Sum = ", summation(a, b)) #we do not need to specify the module name while accessing summation()

输出
Enter the first number10 Enter the second number20 Sum =30

如果我们事先知道要从模块导入的属性, 那么from … import语句总是更好地使用。它不会使我们的代码更重。我们还可以使用*从模块导入所有属性。
考虑以下语法。
from < module> import *

重命名模块 Python为我们提供了导入具有特定名称的模块的灵活性, 以便我们可以使用该名称在python源文件中使用该模块。
重命名模块的语法如下。
import < module-name> as < specific-name>

例子
#the module calculation of previous example is imported in this example as cal. import calculation as cal; a = int(input("Enter a?")); b = int(input("Enter b?")); print("Sum = ", cal.summation(a, b))

输出
Enter a?10 Enter b?20 Sum =30

使用dir()函数 dir()函数返回在传递的模块中定义的名称的排序列表。该列表包含此模块中定义的所有子模块, 变量和功能。
考虑以下示例。
例子
import jsonList = dir(json)print(List)

输出
['JSONDecoder', 'JSONEncoder', '__all__', '__author__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__path__', '__spec__', '__version__', '_default_decoder', '_default_encoder', 'decoder', 'dump', 'dumps', 'encoder', 'load', 'loads', 'scanner']

reload()函数 正如我们已经说过的, 一个模块被加载一次, 而不管它被导入python源文件的次数。但是, 如果要重新加载已导入的模块以重新执行顶级代码, 则python向我们提供了reload()函数。下面给出了使用reload()函数的语法。
reload(< module-name> )

例如, 要重新加载上一示例中定义的模块计算, 我们必须使用以下代码行。
reload(calculation)

变量范围 在Python中, 变量与两种类型的范围相关联。除非或直到在函数中定义了全局范围, 否则模块中定义的所有变量都包含全局范围。
函数内部定义的所有变量都包含局部范围, 该范围仅限于此函数本身。我们无法全局访问局部变量。
如果使用两个不同的作用域(即局部变量和全局变量)以相同的名称定义了两个变量, 则始终将优先级赋予局部变量。
考虑以下示例。
例子
name = "john" def print_name(name): print("Hi", name) #prints the name that is local to this function only. name = input("Enter the name?") print_name(name)

输出
Hi David

Python包 python中的软件包通过提供分层目录结构(其中的软件包包含子软件包, 模块和子模块), 为开发人员提供了应用程序开发环境。这些软件包用于有效地对应用程序级代码进行分类。
让我们在主目录中创建一个名为” 雇员” 的程序包。请考虑以下步骤。
1.在路径/ home上创建一个名称为Employees的目录。
2.在路径/ home / Employees上创建一个名称为ITEmployees.py的python源文件。
ITEmployees.py
def getITNames(): List = ["John", "David", "Nick", "Martin"] return List;

3.同样, 再创建一个名称为BPOEmployees.py的python文件, 并创建一个函数getBPONames()。
4.现在, 我们在第一步中创建的Employees目录包含两个python模块。为了使该目录成为一个包, 我们需要在这里再添加一个文件, 即__init__.py, 其中包含该目录中定义的模块的import语句。
__init__.py
from ITEmployees import getITNames from BPOEmployees import getBPONames

5.现在, 目录Employees已成为包含两个python模块的软件包。在这里, 我们必须注意, 必须在目录中创建__init__.py才能将该目录转换为包。
6.要使用在Employees包中定义的模块, 我们必须将其导入到我们的python源文件中。让我们在主目录(/ home)中创建一个简单的python源文件, 该文件使用此包中定义的模块。
Test.py
import Employees print(Employees.getNames())

输出
['John', 'David', 'Nick', 'Martin']

我们可以在包中包含子包。我们可以根据应用程序要求将软件包嵌套到任何级别。
下图显示了应用程序库管理系统的目录结构, 该系统包含三个子包, 分别是Admin, Librarian和Student。子软件包包含python模块。
Python模块用法最全面的剖析

文章图片

    推荐阅读