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.py
I 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, square
from 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_module1

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

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

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

$ python3 top_module.py
Calculate the area of circle
28.274333882308138

·END·
 

高效程序员

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

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

展开阅读全文

Python数据分析与挖掘

01-08
92讲视频课+16大项目实战+源码+¥800元课程礼包+讲师社群1V1答疑+社群闭门分享会=99元   为什么学习数据分析?       人工智能、大数据时代有什么技能是可以运用在各种行业的?数据分析就是。       从海量数据中获得别人看不见的信息,创业者可以通过数据分析来优化产品,营销人员可以通过数据分析改进营销策略,产品经理可以通过数据分析洞察用户习惯,金融从业者可以通过数据分析规避投资风险,程序员可以通过数据分析进一步挖掘出数据价值,它和编程一样,本质上也是一个工具,通过数据来对现实事物进行分析和识别的能力。不管你从事什么行业,掌握了数据分析能力,往往在其岗位上更有竞争力。    本课程共包含五大模块: 一、先导篇: 通过分析数据分析师的一天,让学员了解全面了解成为一个数据分析师的所有必修功法,对数据分析师不在迷惑。   二、基础篇: 围绕Python基础语法介绍、数据预处理、数据可视化以及数据分析与挖掘......这些核心技能模块展开,帮助你快速而全面的掌握和了解成为一个数据分析师的所有必修功法。   三、数据采集篇: 通过网络爬虫实战解决数据分析的必经之路:数据从何来的问题,讲解常见的爬虫套路并利用三大实战帮助学员扎实数据采集能力,避免没有数据可分析的尴尬。   四、分析工具篇: 讲解数据分析避不开的科学计算库Numpy、数据分析工具Pandas及常见可视化工具Matplotlib。   五、算法篇: 算法是数据分析的精华,课程精选10大算法,包括分类、聚类、预测3大类型,每个算法都从原理和案例两个角度学习,让你不仅能用起来,了解原理,还能知道为什么这么做。
©️2020 CSDN 皮肤主题: 技术黑板 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值