亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Industrial programming >> Python

使用示例在 Python 中导入模块

Python中有哪些模块?

模块是带有 python 代码的文件。代码可以以变量、函数或类的形式定义。文件名成为模块名。

例如,如果您的文件名为 guru99.py,则模块名称将为 guru99 .使用模块功能,您可以将代码分成不同的文件,而不是将所有内容都写在一个文件中。

在本教程中,您将学习:

什么是 Python 导入模块?

在 python 中,文件被视为一个模块。要使用该模块,您必须使用 import 来导入它 关键词。文件中存在的函数或变量可以通过导入模块在另一个文件中使用。此功能在其他语言中可用,例如 typescript、JavaScript、java、ruby 等。

如何在 Python 中创建和导入模块?

现在我们将创建一个模块并将其导入另一个文件。

以下是创建和导入模块的流程,如屏幕截图所示:

按照给出的步骤在 python 中创建一个模块。

用于测试代码的文件夹结构如下:

modtest/
	test.py
	display.py	

步骤 1) 创建一个文件并将其命名为 test.py

步骤 2) 在 test.py 中创建一个名为 display_message() 的函数

Def display_message():
    return "Welcome to Guru99 Tutorials!"

步骤 3) 现在创建另一个文件 display.py。

第 4 步) 在display.py里面导入moduletest.py文件,如下图:

import test

导入时不必提及 test.py,只需提及文件名即可。

步骤 5)

然后你可以从display.py里面的test.py调用函数display_message(),你需要使用module_name.function_name。

例如 test.display_message()。

Import test
print(test.display_message())

第 6 步)

当你执行display.py,你会得到如下输出:

Welcome to Guru99 Tutorials!

在 Python 中导入类

之前,我们已经看到了一个带有函数的简单模块。这里将创建一个类并在另一个文件中引用该类。

测试代码的文件夹结构如下:

myproj/
	Car.py
	display.py

使用以下代码创建一个名为 Car.py 的文件:

文件名:Car.py

class Car:
	brand_name = "BMW"
	model = "Z4"
	manu_year = "2020"

	def __init__(self, brand_name, model, manu_year):
		self.brand_name = brand_name
		self.model = model
		self.manu_year = manu_year

	def car_details(self):
		print("Car brand is ", self.brand_name)
		print("Car model is ", self.model)
		print("Car manufacture year is ", self.manu_year)
			
			
	def get_Car_brand(self):
		print("Car brand is ", self.brand_name)

	def get_Car_model(self):
		print("Car model is ", self.model) 

在文件 Car.py 中,有属性brand_name、model 和manu_year。类内部定义的函数有car_details()、get_Car_brand()、get_Car_model()。

现在让我们将 Car.py 文件用作另一个名为 display.py 的文件中的模块。

文件名:display.py

import Car
car_det = Car.Car("BMW","Z5", 2020)
print(car_det.brand_name)
print(car_det.car_details())
print(car_det.get_Car_brand())
print(car_det.get_Car_model())

输出:

BMW
Car brand is  BMW
Car model is  Z5
Car manufacture year is  2020
Car brand is  BMW
Car model is  Z5

所以我们可以使用 Car 模块访问 Car.py 中的所有变量和函数。

使用 from 导入模块

您只能导入模块的一小部分,即仅从模块中导入所需的函数和变量名,而不是导入完整的代码。

当你只想导入特定的东西时,你可以使用“from”关键字来导入你想要的东西。

所以语法是

from  module import your function_name , variables,... etc.

用于测试代码的文件夹结构如下:

modtest/
	test.py
	display.py	

在 test.py 中有 2 个函数,如图所示:

文件名:test.py

defdisplay_message():
	return "Welcome to Guru99 Tutorials!"
	
def display_message1():
	return "All about Python!"

现在你想要 display_message() 函数。您正在导入的函数或变量可以直接访问,如下所示:

文件名:display.py

from test import display_message
print(display_message())

输出:

Welcome to Guru99 Tutorials!

现在如果你碰巧使用了函数 display_message1() ,它会抛出一个函数未定义的错误,如下所示:

from test import display_message
print(display_message1())

输出:

Traceback (most recent call last):
File "display.py", line 3, in <module>
print(display_message1())
Name Error: name 'display_message1' is not defined

从模块中导入所有内容

Import 允许您通过使用 import 后跟模块名称来导入完整的模块,即要使用的文件名或库。

语法:

Import module

或者通过使用

from module import *

用于测试代码的文件夹结构如下:

modtest/
	test.py
	display.py	

下面是test.py里面的代码细节

my_name = "Guru99"
my_address = "Mumbai"

defdisplay_message():
	return "Welcome to Guru99 Tutorials!"
	
	
def display_message1():
	return "All about Python!"

使用导入模块

只使用import module name,要引用模块内部的变量和函数,必须以模块名作为前缀。

例子

文件名:display.py

Import test
print(test.display_message())
print(test.display_message1())
print(test.my_name)
print(test.my_address)

模块名test用于引用模块test里面的函数和变量。

输出:

Welcome to Guru99 Tutorials!
All about Python!
Guru99
Mumbai

使用导入 *

让我们看一个使用 import * 的例子 .使用 import * ,函数和变量可以直接访问,如下例所示:

from test import *

print(display_message())
print(display_message1())
print(my_name)
print(my_address)

输出:

Welcome to Guru99 Tutorials!
All about Python!
Guru99
Mumbai

dir() 函数

dir() 是 python 的内置函数。 dir() 返回所有属性和方法,包括给定对象的内置属性。

因此,当在模块上使用 dir() 时,它会为您提供模块内部存在的变量、函数。

这是模块上 dir() 的工作示例。我们有一个名为 Car.py 的类,让我们导入 Car 并分配给 dir() 以查看输出。

测试代码的文件夹结构如下:

test prop/
	Car.py
	test.py	

文件名:Car.py

class Car:
	brand_name = "BMW"
	model = "Z4"
	manu_year = "2020"

	def __init__(self, brand_name, model, manu_year):
		self.brand_name = brand_name
		self.model = model
		self.manu_year = manu_year

	def car_details(self):
		print("Car brand is ", self.brand_name)
		print("Car model is ", self.model)
		print("Car manufacture year is ", self.manu_year)
			
			
	def get_Car_brand(self):
		print("Car brand is ", self.brand_name)

	def get_Car_model(self):
		print("Car model is ", self.model) 

文件名:test.py

import Car

class_contents = dir(Car)
print(class_contents)

输出为我们提供了类的名称以及 Car.py 中定义的所有函数。

您还可以尝试在 Python 中可用的内置模块上使用 dir()。让我们在 json 上尝试同样的方法 如下例所示的模块。它将显示 json 中可用的所有属性和方法 模块。

Import json
json_details = dir(json)
print(json_details)

输出:

['JSONDecodeError', 'JSONDecoder', 'JSONEncoder', '__all__', '__author__', '__bu
iltins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__pac
kage__', '__path__', '__spec__', '__version__', '_default_decoder', '_default_en
coder', 'codecs', 'decoder', 'detect_encoding', 'dump', 'dumps', 'encoder', 'loa
d', 'loads', 'scanner']

包是一个目录,其中定义了所有模块。为了让 Python 解释器把它当作一个包,你的目录应该有 init.py 文件。 init.py 将目录作为一个包。这是我们将要处理的包的布局。

包的名字是我的包 .要开始使用包,请创建一个名为 package/ 的目录。在目录中,创建一个名为 __init__.py 的空文件。再创建 3 个文件 module1.py、module2.py 和 module3.py 并定义功能,如屏幕截图所示。下面是module1.py、module2.py和module3.py的详细介绍

module1.py

def mod1_func1():
print("Welcome to Module1 function1")

def mod1_func2():
print("Welcome to Module1 function2")

def mod1_func3():
print("Welcome to Module1 function3")

module2.py

def mod2_func1():
print("Welcome to Module2 function1")

def mod2_func2():
print("Welcome to Module2 function2")

def mod2_func3():
print("Welcome to Module2 function3")

module3.py

def mod3_func1():
print("Welcome to Module3 function1")

def mod3_func2():
print("Welcome to Module3 function2")

def mod3_func3():
print("Welcome to Module3 function3")

准备好使用。现在调用任何文件中的包,如下所示:test.py:

在这里,mypackage.module1 被导入并被赋予一个别名为 mod1。 同样,您可以使用我的包中的其他模块 module2.py 和 module3.py。

import mypackage.module1 as mod1

print(mod1.mod1_func1())
print(mod1.mod1_func2())
print(mod1.mod1_func2())

输出:

Welcome to Module1 function1
None
Welcome to Module1 function2
None
Welcome to Module1 function2
None

我们刚刚演示了这个包,里面有一个简单的模块,里面有函数。根据您的项目,您还可以使用子包进行打包。子文件夹/具有定义类的模块。

Python 模块搜索路径

在执行过程中,当python遇到import module name ,解释器尝试定位模块。它在内置模块列表中搜索模块。归根结底,sys.path里面定义的目录。

综上所述,解释器通过以下搜索来定位模块:

  1. 在您的当前目录中。
  2. 在内置模块列表中
  3. 在 sys.path 目录中

您可以通过导入 sys 模块并打印 sys.path 来获取 sys.path 的详细信息。它将为您提供如下所示的目录列表:

importsys
print(sys.path)

输出:

['Python Latest\\task2', 'Users\\AppData\\Local\\Programs\\Python\
\Python37\\python37.zip', 'Users\\AppData\\Local\\Programs\\Python\\P
ython37\\DLLs']

您还可以根据需要修改路径并保留目录。

在导入中使用模块别名

您还可以通过为其提供别名来将模块名称转换为更短的形式。别名可以使用关键字来完成。

语法:

import filename as alias name

测试代码的文件夹结构如下:

Mod test/
	test.py
	display.py	

下面是test.py里面的代码

my_name = "Guru99"
my_address = "Mumbai"

def display_message():
	return "Welcome to Guru99 Tutorials!"	
	
def display_message1():
	return "All about Python!"

现在将在 display.py 中为 test.py 使用别名

Import test as t

print(t.display_message())
print(t.display_message1())
print(t.my_name)
print(t.my_address)

用于测试模块的别名是 t 。因此 test.py 中的函数和变量可以使用别名 t 来引用。

输出:

Welcome to Guru99 Tutorials!
All about Python!
Guru99
Mumbai

Python 中的绝对和相对导入

您现在知道如何将文件作为模块导入到另一个文件中。现在让我们看看如何管理文件夹中可用的文件。文件夹中的文件可以通过绝对导入或相对导入来导入。

假设你有你的项目文件夹结构,如下所示:

根文件夹是我的项目/.它有两个子文件夹 package1 和 package2。

文件夹package1有两个模块,module1.py和module2.py。

文件夹 package2 有一个类 myclass.py,一个带有 module3.py 的子包 subpkg,最后一个是 module4.py。

使用绝对导入

对于绝对导入,您需要直接从项目根文件夹添加模块的整个路径。

现在让我们看看如何利用绝对导入来引用每个模块中存在的函数。

要使用函数myfunc1,您需要按如下方式导入:

from package1.module1  import  myfunc1
or
from package1 import module1
module1.myfunc1()  

要使用函数 myfunc3,您需要按如下方式导入:

from package1.subpkg.module3  import  myfunc3
or
from package1.subpkg import module3
module3.myfunc3()  

使用绝对导入的优缺点

以下是使用绝对导入的优点:

使用绝对导入的缺点

以下是使用绝对导入的缺点:

缺点:

使用相对导入

考虑到下面提到的相同文件夹结构,我们将看到如何使用相对导入来导入相同的文件夹。

在相对导入中,要导入的模块是相对于当前位置,即导入语句所在的位置。

语法:

在相对导入中,使用 from 导入时,需要在模块名称前添加句点 (.) .

如果模块位于当前位置的上一级,则模块名称前将有 2 个句点 (..)。

参考上面提到的文件夹结构图,我们有以下模块及其功能,需要参考。

要使用函数myfunc1,您需要按如下方式导入:

from  .module1  import  myfunc1

要使用函数 myfunc3,您需要按如下方式导入:

from  .subpkg.module3  import  myfunc3

相对导入的优点

优点:

相对导入的缺点

缺点:

总结:


Python

  1. Python 模块
  2. Python时间模块
  3. Python Print() 语句:如何通过示例打印
  4. 带有示例的 Python 字符串计数()
  5. Python String format() 举例说明
  6. Python String find() 方法及示例
  7. 带有示例的 Python Lambda 函数
  8. 带有示例的 Python round() 函数
  9. 带有示例的 Python map() 函数
  10. Python Timeit() 与示例
  11. 集合中的 Python 计数器示例
  12. Python 中的 type() 和 isinstance() 示例