在Python中,模块和包是用于组织代码、实现代码重用和保持代码整洁的重要工具。以下是关于Python模块和包的基本使用指南:
模块是一个包含Python代码的文件,文件名就是模块名,且文件扩展名为.py
。模块中可以包含函数、类和变量,也可以导入其他模块。
创建一个模块非常简单,只需编写一个Python文件即可。例如,创建一个名为mymodule.py
的文件:
# mymodule.py
def greet(name):
return f"Hello, {name}!"
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def __str__(self):
return f"{self.name} is {self.age} years old."
在另一个Python文件中,你可以使用import
语句导入并使用这个模块:
# main.py
import mymodule
print(mymodule.greet("Alice")) # 输出: Hello, Alice!
person = mymodule.Person("Bob", 30)
print(person) # 输出: Bob is 30 years old.
你也可以使用from ... import ...
语句来导入模块中的特定部分:
# main.py
from mymodule import greet, Person
print(greet("Charlie")) # 输出: Hello, Charlie!
person = Person("David", 25)
print(person) # 输出: David is 25 years old.
包是一个包含多个模块和子包的目录,目录中必须包含一个__init__.py
文件(可以是空的),这个文件使得Python将该目录视为一个包。
假设你要创建一个名为mypackage
的包,其中包含两个模块module1.py
和module2.py
,以及一个子包subpackage
,子包中有一个模块module3.py
。
目录结构如下:
mypackage/
__init__.py
module1.py
module2.py
subpackage/
__init__.py
module3.py
module1.py
的内容:
# mypackage/module1.py
def func1():
return "Function 1 from module1"
module2.py
的内容:
# mypackage/module2.py
def func2():
return "Function 2 from module2"
subpackage/module3.py
的内容:
# mypackage/subpackage/module3.py
def func3():
return "Function 3 from subpackage.module3"
你可以使用import
语句来导入包中的模块:
# main.py
from mypackage import module1, module2
from mypackage.subpackage import module3
print(module1.func1()) # 输出: Function 1 from module1
print(module2.func2()) # 输出: Function 2 from module2
print(module3.func3()) # 输出: Function 3 from subpackage.module3
__init__.py
的作用__init__.py
文件可以包含包的初始化代码,也可以用来定义包在被导入时应该导入哪些模块。例如,你可以在mypackage/__init__.py
中添加以下代码:
# mypackage/__init__.py
from .module1 import func1
from .module2 import func2
from .subpackage.module3 import func3
这样,当你导入包时,可以直接使用这些函数:
# main.py
import mypackage
print(mypackage.func1()) # 输出: Function 1 from module1
print(mypackage.func2()) # 输出: Function 2 from module2
print(mypackage.func3()) # 输出: Function 3 from subpackage.module3
.py
。import
语句可以导入模块并使用其中的函数、类和变量。__init__.py
文件。