Python模块的定义,模块的导入,__name__用法实例分

1. Python模块的定义

Python中的模块是一个包含了Python代码的文件,这些代码可以被其他文件直接引用。使用模块化编程的方法,可以把一个大程序拆分成一个个小的模块,这样会更方便代码维护和修改。Python自带许多内置模块,还可以通过第三方库安装更多功能强大的模块。

2. 模块的导入

2.1 import语句

在Python中,要导入一个模块,使用import语句。比如要导入Python内置的模块math,可以使用以下代码:

import math

print(math.pi)

这里,我们使用import导入了Python内置模块mathmath.pi是一个常量,它表示圆周率。我们可以直接使用math.pi来输出圆周率的值。

当一个模块被导入后,Python解释器就会把该模块的代码执行一遍,并把其中定义的对象存放在一个命名空间中。我们可以使用模块名.对象名的格式来访问其中的对象。

2.2 from...import语句

除了import语句外,还可以使用from...import语句来导入指定的对象。比如要导入math模块中的sqrt()函数,可以使用以下代码:

from math import sqrt

print(sqrt(9))

这里,我们使用from math import sqrt导入math模块中的sqrt()函数,sqrt()函数是求平方根的函数,我们可以直接使用sqrt(9)来输出9的平方根。

使用from...import导入的对象,不需要使用模块名.对象名的格式来访问,而是可以直接使用对象名访问。

2.3 as关键字

在导入模块时,还可以使用as关键字为模块或者对象取一个别名。比如要导入math模块,并为它取一个别名m,可以使用以下代码:

import math as m

print(m.pi)

这里,我们使用import math as m导入math模块并为其取一个别名m,我们可以使用m.pi来输出圆周率的值。

同样的,当导入对象时,也可以为其取一个别名。比如要导入math模块中的sqrt()函数,并为它取一个别名s,可以使用以下代码:

from math import sqrt as s

print(s(9))

这里,我们使用from math import sqrt as s导入math模块中的sqrt()函数并为其取一个别名s,我们可以使用s(9)来输出9的平方根。

3. __name__用法实例

__name__是Python中一个内置的变量,每个模块都有一个默认的__name__属性,该属性的值是一个表示该模块名字的字符串。当我们执行一个Python文件时,该文件的__name__属性为'__main__',而当我们import该文件时,该文件的__name__属性为该文件名。

下面提供一个例子来说明__name__的用法。

首先,我们创建一个名为module1.py的Python文件,代码如下:

def test():

print('This is module1.')

print('__name__:', __name__)

if __name__ == '__main__':

test()

在这个文件中,我们定义了一个名为test()的函数,并输出了__name__的值。在文件的最后,我们使用if __name__ == '__main__'判断__name__的属性值是否为'__main__',如果是,则执行test()函数。

接下来,我们创建另一个名为module2.py的Python文件,代码如下:

import module1

print('__name__ in module2:', __name__)

module1.test()

在这个文件中,我们importmodule1模块,并输出了__name__的值。接着,我们调用了module1.test()函数。

最后,我们在命令行中执行module2.py文件,输出如下:

__name__: __main__

This is module1.

__name__ in module2: __main__

This is module1.

可以看到,首先输出了module1.py文件中的__name__属性值,然后输出了'This is module1.',接着输出了module2.py文件中的__name__属性值,最后又输出了'This is module1.'。这是因为在module2.pyimportmodule1.py,而module1.py中的if __name__ == '__main__'语句并没有被执行,所以执行了test()函数。

如果我们在命令行中直接执行module1.py文件,输出如下:

__name__: __main__

This is module1.

可以看到,输出只有module1.py文件中的__name__属性值和'This is module1.'

总结:使用__name__属性可以检测一个Python模块是被导入还是被直接执行,这样可以让一个模块既可以直接运行,又可以作为其他模块的库。当一个模块被导入时,模块中的代码会被执行一次,而当该模块被直接执行时,模块中的代码会被执行多次。

结语

本文介绍了Python模块的定义、模块的导入和__name__用法实例。掌握了这些知识后,可以更好地使用Python语言进行编程,提高编程效率和代码的可读性。

后端开发标签