在 Python 中,模块的使用方式有很多种,可以在 Python shell 中使用,也可以将其用于另外一个模块中。虽然形式不同,但本质没什么区别,均属于导入。
除导入之外,还可以将模块作为一个独立的脚本来执行。
| 版权声明:一去、二三里,未经博主允许不得转载。
当使用下述方式运行 Python 模块时:
python script.py
模块中的代码将被执行,就像导入它一样,但 __name__
将被设置为 __main__
。
例如,有一个模块 calc.py
,里面定义了一个 add()
函数。如果要测试这个函数,可以这样编写:
def add(a, b):
return a + b
if __name__ == '__main__':
print('test: 2 + 3 =', add(2, 3))
然后,就可以将其作为一个脚本来执行:
$ python calc.py
test: 2 + 3 = 5
注意: 代码中的 if
语句很有必要,这样既可以将模块作为独立的脚本运行,又可以将其作为可导入的模块来使用,请参考:Python 中 name == ‘main’ 的作用
倘若参数是可变的,该怎么办?
很简单,命令行传参 - 这是对上述形式的一个扩展:
python script.py
这时,要解析传递的参数,需要用到 sys
模块:
def add(a, b):
return a + b
if __name__ == '__main__':
import sys
args = sys.argv # 用于获取命令行参数
print(args)
print(add(int(args[1]), int(args[2])))
没错,通过 sys.argv
可以获取命令行参数,它是一个 list 类型。sys.argv[0]
表示代码本身文件路径,参数索引从 1 开始。
使用很简单,参数之间以空格隔开:
$ python calc.py 2 3
['calc.py', '2', '3']
5
$ python calc.py 4 5
['calc.py', '4', '5']
9
这样,就可以传递任意的参数了。