Python3 - 模块引入

Python3 - 模块引入 首页 / Python3入门教程 / Python3 - 模块引入

可以将python模块定义为python程序文件,其中包含python代码,包括python函数,类或变量。换句话说,无涯教程可以说以扩展名(.py)保存的python代码文件被视为模块。可能在python模块中有一个可运行的代码。

在此示例中,将创建一个名为file.py的模块,其中包含一个函数func,该函数包含在控制台上打印一些消息的代码。

创建名为 file.py 的模块。

#displaymsg将消息打印到已传递的名称。
def displayMsg(name)
	print("Hi "+name);  

在这里,需要将此模块包含到主模块中,以调用在名为file的模块中定义的方法displayMsg()。

加载模块

需要在python代码中加载模块以使用其函数。 Python提供了以下两种类型的语句。

  1. import 声明
  2. from-import 声明

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?Learnfk
Hi Learnfk

from-import声明

python无需将整个模块导入名称空间,而是提供了仅导入模块特定属性的灵活性。下面提供了使用from-import语句的语法。

from < module-name> import <name 1>, <name 2>..,<name n> 

考虑以下名为"calculation"的模块,其中包含三个函数:求和,乘法和除法。

calculation.py:

#将代码放在 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> 
#在此示例中导入前一个示例的模块计算为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 json

List = 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) #仅打印此函数的本地名称。
name = input("Enter the name?")
print_name(name)

输出:

Hi David 

Packages 包

python中的软件包(package)通过提供分层的目录结构(其中包含子软件包,模块和子模块)来为开发人员提供应用程序开发环境的便利。这些软件包用于有效地对应用程序级别的代码进行分类。

在主目录中创建一个名为"Employees"的程序包。请考虑以下步骤。

1.在路径/home 上创建一个名称为Employees的目录。

2.在路径/home/Employees 上创建一个名称为ITEmployees.py的python源文件。

ITEmployees.py

def getITNames():
	List = ["Learnfk", "David", "Nick", 	"Martin"]
	return List;

3.同样,再创建一个名称为BPOEmployees.py的python文件,并创建一个函数getBPONames()。

无涯教程网

4.现在,在第一步中创建的雇员目录包含两个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())

输出:

['Learnfk', 'David', 'Nick', 'Martin']

可以在包中包含子包。无涯教程可以根据应用程序要求将软件包嵌套到任何级别。

下图显示了应用程序库管理系统的目录结构,该系统包含三个子包,分别是Admin,Librarian和Student。子软件包包含python模块。

Python包

祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)

技术教程推荐

玩转Git三剑客 -〔苏玲〕

设计模式之美 -〔王争〕

NLP实战高手课 -〔王然〕

软件设计之美 -〔郑晔〕

程序员的个人财富课 -〔王喆〕

手把手带你写一门编程语言 -〔宫文学〕

玩转Vue 3全家桶 -〔大圣〕

运维监控系统实战笔记 -〔秦晓辉〕

B端产品经理入门课 -〔董小圣〕

好记忆不如烂笔头。留下您的足迹吧 :)