1. Python模块的定义
Python中的模块是一个包含了Python代码的文件,这些代码可以被其他文件直接引用。使用模块化编程的方法,可以把一个大程序拆分成一个个小的模块,这样会更方便代码维护和修改。Python自带许多内置模块,还可以通过第三方库安装更多功能强大的模块。
2. 模块的导入
2.1 import语句
在Python中,要导入一个模块,使用import
语句。比如要导入Python内置的模块math
,可以使用以下代码:
import math
print(math.pi)
这里,我们使用import
导入了Python内置模块math
,math.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()
在这个文件中,我们import
了module1
模块,并输出了__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.py
中import
了module1.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语言进行编程,提高编程效率和代码的可读性。