python笔记11

1、模块简介

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

1. 创建模块

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

python 复制代码
# mymodule.py
def say_hello():
    print("Hello from mymodule!")

my_variable = 42

2.导入模块

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

python 复制代码
import mymodule

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

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

python 复制代码
from mymodule import say_hello

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

3.模块的命名空间

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

4.使用别名

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

python 复制代码
import mymodule as mm

mm.say_hello()

5.属性__name__

  1. 当一个模块被直接执行时,__name__ 的值为"__main__" 。这表示这个脚本是主程序,而不是被导入到其他模块中的一部分。

    python 复制代码
    # example.py
    def main():
        print("This is the main function.")
    
    if __name__ == "__main__":
        main()

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

  2. 当一个模块被导入到其他模块中时, __name__的值是模块的名称。

    python 复制代码
    # another_module.py
    import example
    
    example.main()  # 在这里,example 模块的 __name__ 值将是 "example"

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

2、模块的导入

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

1. 简单导入

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

python 复制代码
# 导入整个模块
import module_name

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

2. 别名导入

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

python 复制代码
# 导入整个模块,并设置别名
import module_name as alias_name

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

3. 导入特定成员

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

python 复制代码
# 导入模块中的特定成员
from module_name import some_function, some_variable

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

4. 导入所有成员

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

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

5. 条件导入

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

python 复制代码
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. 包的结构

一个典型的包结构如下:

python 复制代码
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语句导入包和模块。例如:

python 复制代码
# 导入包中的模块
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 包含如下代码:

python 复制代码
# my_package/__init__.py

from .module1 import some_function
from .module2 import another_function

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

python 复制代码
# 使用 __init__.py 导出的函数
import my_package

my_package.some_function()
my_package.another_function()

4. 变量__all__

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

python 复制代码
# my_package/__init__.py

__all__ = ['module1', 'module2']

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

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

相关推荐
Rabitebla2 小时前
【Linux 底层原理】进程(十):进程等待详解---从僵尸进程到 wait、waitpid 与 status
linux·c++·笔记·学习·visual studio
小lu飞4 小时前
2026小红书小工具怎么制作:纯前端 ZIP 打包、沙箱限制与笔记挂载流程
前端·笔记·ai·ai编程
无心水7 小时前
24、系统架构师论文写作专题 核心考点与学习笔记
笔记·学习·系统架构·架构师·安全架构·软考架构师·软考系统架构设计师
蒸蒸yyyyzwd7 小时前
邓明 Agent 系统面试-意图识别学习笔记
笔记·学习
Zhao-Jichao11 小时前
AI Prompting for Everyone 课程笔记 - P21 总结 Conclusion
人工智能·笔记
欢欢李11 小时前
【LTE L3 笔记 05】LTE同步信号
笔记·无线通信·物理层·lte·空口协议
La Pulga12 小时前
【FreeRTOS源码学习笔记】空闲任务与阻塞延时
笔记·mcu·学习·嵌入式·freertos·实时操作系统
蒸蒸yyyyzwd13 小时前
秋招学习笔记 day106
笔记·学习
小李不想当小白14 小时前
WDG看门狗(STM32标准库学习笔记)
笔记·stm32·单片机·嵌入式硬件·学习·嵌入式
欢欢李14 小时前
【LTE L3 笔记 04】LTE帧结构
笔记·无线通信·物理层·lte·空口协议