Python 模块结构

网友投稿 882 2022-11-13

Python 模块结构

Python 模块结构

模块是由 Python 代码组成的 .py 文件,任何 Python 文件都可以作为一个模块被引用。

有些模块可通过标准库来获得,因此会随着 Python 一起安装,而其他模块可以用包管理器 pip 来安装。此外,我们还可以根据需要编写属于自己的模块,也就是常说的自定义模块。

1

创建模块

模块的编写相当简单,它可以包含变量、函数和类的定义。一旦模块编写完成,便可以在其他 Python 程序中进行导入,然后使用它里面的定义。

用一个例子来进行说明,创建一个名为 my_module.py 的文件,内容如下所示:

# 定义一个变量msg = 'I am very happy.'# 定义一个函数def hello(): print("Hello, World!")# 定义一个类class Person: def __init__(self, name, age): self.name = name self.age = age def display(self): print("My name is {}, i am {} years old.".format(self.name, self.age))

这是一个典型的 Python 模块,它并没有调用任何操作,只是简单地定义了变量 msg、函数 hello() 和类 Person,其代码可以导入并在其他 Python 文件中重用。

2

导入模块

现在,在同一目录下创建一个名为 top_module.py 的文件,然后导入上述模块并访问其中的属性:

import my_module as m# 调用变量print(m.msg)# 调用函数m.hello()# 创建对象,并调用方法p = m.Person('Waleon', 18)p.display()

这是运行 Python 程序的顶级脚本,它显式地调用了模块中的函数、对象的方法,并将变量的值打印到屏幕上。

运行该脚本,将得到以下输出:

$ python3 top_module.pyI am very happy.Hello, World!My name is Waleon, i am 18 years old.

值得注意的是,一旦模块被导入(导入方式可参考:​​Python 模块​​),模块名将成为导入模块中的变量/对象,它里面的所有顶级代码定义都会成为该变量的属性。

3

模块结构

在绝大多数情况下,Python 程序会被组织在多个文件中,并使用 import 语句相互关联。一般来说,这些文件会分被为三类:

顶级模块:Python 脚本,它是程序的主要入口点,运行此文件以启动程序。自定义模块:用户自己写的 Python 模块,它往往会提供一些独立的功能,将会被导入到顶级模块或其他自定义模块中。标准库模块:内置于 Python 安装包中的模块(例如:sys、time、json 等),为日常编程中的诸多问题提供了标准的解决方案。

来看一个基本的程序结构,它包含了上面这些模块:

在这个图中,top_module.py 是顶级模块,它导入了模块 my_module1 中定义的内容,但也可以通过 my_module1 访问 my_module2 中的内容,而这两个自定义模块使用了彼此之间的资源,以及标准库中的其他模块。

Tips:导入链可以深入到任何想要的地方:导入文件的数量没有限制,它们可以彼此导入,但要小心循环导入。

实际应用

还是举一个例子吧,来详细说明这一点,先来看 my_module1.py:

from my_module2 import info, squarefrom math import pi# 定义一个形状shape = 'circle'# 求圆的面积def area(r): return pi * square(r)

接着是 my_module2.py:

# 打印一条信息def info(): import my_module1 print('Calculate the area of {}'.format(my_module1.shape))# 求平方def square(r): return r ** 2

你可能注意到了,这里的 import 语句并不在第一行,而是被放入了函数(或者是类)里面,这样做的目的正是为了避免循环导入。

再来看 top_module.py:

import my_module1my_module1.info()print(my_module1.area(3))

在这里,top_module.py 是由用户运行的顶级模块,它通过 my_module1.py 从其他模块导入内容。my_module1 和 my_module2 是用户定义的模块,而 math 模块是从标准 Python 库导入的。

运行顶级脚本,将得到以下输出:

$ python3 top_module.pyCalculate the area of circle28.274333882308138

·END·

高效程序员

谈天 · 说地 · 侃代码 · 开车

长按识别二维码,解锁更多精彩内容

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:关于log4j2的异步日志输出方式
下一篇:MySQL优化(SQL语句及索引优化)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~