当在命令行中,运行python脚本时,通常有两种方式传入参数
方法1: 基于位置的参数传入
即根据输入参数的的位置,分配给对应的脚本文件。此时,要特别注意参数顺序的一一对应。
script.py
import sys
def add(a, b):
print(float(a)+float(b))
if __name__ == '__main__':
arg1, arg2 = sys.argv[1], sys.argv[2] # 接收位置参数
add(arg1, arg2)
需要注意的是,此时传入的参数都会被默认为str
类型,需要在函数内部进行解析和转换。
python script.py 3.0 4.0
# 返回结果7.0
方法2: 基于参数名称的传入
利用argparse
模块,在函数内定义好相关的命名参数(包括名称、数据类型和默认值等),从而在命令行中可以方便的调用。
script.py
import argparse
parser = argparse.ArgumentParser(description='a demo of script')
parser.add_argument('--a', type=float, default=0.0) # 添加变量
parser.add_argument('--b', type=float, default=1.0)
if __name__ == '__main__':
args = parser.parse_args() # 解析所有的命令行传入变量
add(args.a, args.b)
值得注意的是:add_argument
中设定的变量数据类型,理论上可以是任何合法的类型,但一般仅使用bool, int, str, float
这些基本类型,更复杂的类型可以在这些基本类型的基础上进行解析。
python script.py --a=4.0 --b=3.0
# 另一种写法: python script.py --a 4.0 --b 3.0
# 返回结果7.0