python中模块化入门了解

什么是模块

为了让代码方便维护,我们将代码进行分类,分别放到不同的文件里。这样,所有的代码都按照一定的规则分布在各个文件里,需要使用的时候只要导入相应的文件即可。在 Python 中,这样的文件被称之为模块(Module)

Python 提前帮我们把一些常用的函数和变量写到了内置模块中,比如数学计算中常用的开根号方法——math.sqrt() 方法,圆周率 π 的数值——math.pi 等

 导入模块

当我们需要使用模块的时候,只需使用 import 语句导入对应的模块即可。我们来看一个例子,这个例子中有两个模块,一个是 other.py 文件,另一个是 main.py 文件。

# other.py
print('带你打开编程世界的大门')

# main.py
import other  # 导入 other 模块
# 输出:带你打开编程世界的大门

其实在执行 import other 后,import other 被替换成 other.py 里的代码

上面的代码是为了让你理解 import 的作用,其实一般模块里的代码大都是定义好的变量和函数等。我们再来看一个例子:

# other.py
pi = 3.14159265359

def half(x):
  return x / 2
# main.py
import other  # 导入 other 模块

print(other.pi)
# 输出:3.14159265359

print(other.half(4))
# 输出:2.0

我们可以看到,当导入模块后,要使用模块中的变量、函数,需要通过 模块名.变量名 和 模块名.函数名() 的方式。. 表明了从属关系,表示某个模块里面的某个变量或函数。

import 语句还有一种用法是 import ... as ...,比如我们觉得 other 这个模块名太长,就可以用 import other as o相当于给 other 取了一个别名为 o,之后我们就可以使用 o 来替代 other

# other.py
pi = 3.14159265359

def half(x):
  return x / 2

# main.py
import other as o  # 导入 other 模块

print(o.pi)
# 输出:3.14159265359

print(o.half(4))
# 输出:2.0

拓展:数据分析常用的 pandas 和 numpy 常被简写成 pd 和 np,所以你会看到 import pandas as pd 和 import numpy as np 这样的写法

导入部分模块

import 语句一次性将整个模块导入进来,我们还可以使用 from ... import ... 语句导入我们需要的变量、函数等。举个例子:

# other.py
pi = 3.14159265359

def half(x):
  return x / 2

# main.py
from other import pi, half  # 从 other 模块导入 pi 和 half

print(pi)
# 输出:3.14159265359

print(half(4))
# 输出:2.0

可以看到,执行 from other import pi, half 后可以直接使用 other.py 里的 pi 和 half,不再需要在前面加 other.。并且同时导入多个变量或函数时,两两之间要用逗号隔开。

需要注意的是:使用 from ... import ... 的方式导入就不能再用 模块名.变量名 和 模块名.函数名 的方式访问模块内的变量或函数了,否则代码将会报错

 程序入口

程序入口,指的就是你 直接运行 的那个 .py 文件。举个例子,main.py 中导入了其他的模块 other.py,接着,我们将 main.py 直接运行,这时 main.py 就是作为程序入口直接运行的,而 other.py 则是以导入的形式运行的。

程序入口的功能,是指明模块中某一段代码在何时才会被运行。如果想让 代码块 B 仅在 abc.py 作为程序入口时才能运行,那就可以在代码中这样写:

# abc.py
代码块 A

if __name__ == '__main__':
  代码块 B

上面代码的意思是当 __name__ 的值为 '__main__' 时执行 代码块 B,那这里的 __name__ 和 '__main__' 又都是什么呢?请听我慢慢道来:

__name__ 这个东西看起来很奇怪,但它的本质其实就是一个 变量。它是 Python 里一个特殊的内置变量,默认值是 模块名

但当模块作为程序入口时,__name__ 的值会被改为 '__main__',总结对比一下:

  • 如果 abc.py 以导入的方式被运行,那 abc.py 中的 __name__ 值就是 'abc'
  • 如果 abc.py 被直接运行,那 abc.py 中 __name__ 的值会被改为 '__main__'
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值