1、模块简介

在Python中,模块是一种组织代码的方式,允许你将相关的代码放在一个文件中,以便更好地组织和重用。模块可以包含变量、函数和类等。下面是关于Python模块的一些基本概念:

1. 创建模块

要创建一个模块,只需创建一个包含Python代码的文件,文件的扩展名通常是.py。例如,如果你有一个名为的文件mymodule.py,它可以被视为一个模块。

# mymodule.py
def say_hello():
    print("Hello from mymodule!")

my_variable = 42

2.导入模块

你可以使用关键字导入模块import,并使用模块中定义的变量、函数或类。

import mymodule

mymodule.say_hello()  # 调用模块中的函数
print(mymodule.my_variable)  # 访问模块中的变量

还可以使用语法导入模块的特定成员:from ... import ...

from mymodule import say_hello

say_hello()  # 可以直接使用函数,而不需要使用模块名前缀

3.模块的命名空间

模块有一个自己的命名空间,可以防止命名冲突。在上面的例子中,mymodule是模块的命名空间。

4.使用别名

可以使用关键字as为导入的模块或模块成员设置别名,以便更方便地使用。

import mymodule as mm

mm.say_hello()

5.属性__name__

  1. 当一个模块被直接执行时,__name__ 的值为"__main__" 。这表示这个脚本是主程序,而不是被导入到其他模块中的一部分。
    # example.py
    def main():
        print("This is the main function.")
    
    if __name__ == "__main__":
        main()
    

    如果你运行这个脚本, __name__的值将是"__main__" ,并且main() 函数将被执行。

  2. 当一个模块被导入到其他模块中时, __name__的值是模块的名称。
    # another_module.py
    import example
    
    example.main()  # 在这里,example 模块的 __name__ 值将是 "example"
    

    这种用法允许在模块中编写一些测试代码,但只有在模块被直接执行时才会运行这些代码。这种机制对于模块的测试和重用是非常有用的。 

2、模块的导入

在Python中,你可以使用 import语句导入其他模块,以便在当前模块中使用其定义的变量、函数、类等。以下是关于模块导入的一些基本用法:

1. 简单导入

最基本的导入形式是使用 import关键字,后跟模块的名称:

# 导入整个模块
import module_name

# 使用模块中的变量、函数、类等
module_name.some_function()

2. 别名导入 

可以使用 as关键字为导入的模块或模块成员设置别名:

# 导入整个模块,并设置别名
import module_name as alias_name

# 使用别名调用模块中的内容
alias_name.some_function()

3. 导入特定成员

如果只需要模块中的特定函数、变量或类,可以使用 语法:from ... import ...

# 导入模块中的特定成员
from module_name import some_function, some_variable

# 可以直接使用导入的成员,而不需要使用模块名前缀
some_function()
print(some_variable)

4. 导入所有成员

你还可以使用 from ... import *导入模块中的所有成员。尽管这种做法在简化代码时可能会方便,但通常不推荐,因为它可能导致命名冲突和代码不易读。

# 导入模块中的所有成员(不推荐)
from module_name import *

5. 条件导入

有时你可能希望根据条件导入不同的模块。可以使用 import ... as ...的结构,并在运行时根据条件决定导入哪个模块:

if some_condition:
    import module1 as my_module
else:
    import module2 as my_module

my_module.some_function()

以上是一些基本的模块导入用法。模块的导入使得代码可以被模块化,重用性增强,并使得代码更易于维护。

3、pythonz中的包

在Python中,包(Package)是一种用于组织模块的层次结构。它是一个包含特殊文件__init__.py 的目录,该文件可以为空,也可以包含Python代码。这个目录中的模块可以通过点记法(dot notation)来访问。

以下是关于Python包的一些基本概念和用法:

1. 包的结构

一个典型的包结构如下:

my_package/
|-- __init__.py
|-- module1.py
|-- module2.py
|-- subpackage/
    |-- __init__.py
    |-- module3.py
  • __init__.py: 是一个包含初始化代码的文件,它可以为空。当Python解释器发现一个目录中包含这个文件时,它会将这个目录视为一个包。

  • module1.py, module2.py, module3.py: 是包中的模块,包含了相关的函数、变量或类。

  • subpackage/: 是一个子包,也是一个包含 __init__.py的目录。

2. 导入包和模块

你可以使用 import语句导入包和模块。例如:

# 导入包中的模块
import my_package.module1
my_package.module1.some_function()

# 导入包中的模块并设置别名
import my_package.module2 as m2
m2.some_function()

# 导入子包中的模块
import my_package.subpackage.module3
my_package.subpackage.module3.some_function()

3. 使用 __init__.py

__init__.py 文件可以包含包级别的初始化代码,也可以用于导出包中的内容。例如,如果__init__.py 包含如下代码:

# my_package/__init__.py

from .module1 import some_function
from .module2 import another_function

那么可以在其他地方直接导入 ,然后使用其中的函数my_package

# 使用 __init__.py 导出的函数
import my_package

my_package.some_function()
my_package.another_function()

4. 变量__all__

__init__.py中,你还可以定义__all__ 变量,用于指定哪些模块或变量应该被导出。例如:

# my_package/__init__.py

__all__ = ['module1', 'module2']

这样,当使用 from my_package import *__all__时,只会导入 中指定的模块或变量。

总体而言,包是一种组织代码的有效方式,可以将相关的模块组织在一起,提高代码的可读性和可维护性。

02-02 09:04