理解
-
sys.argv[] :是一个程序外部的参数组成的列表;
- 程序外部的参数,即用户输入的参数,并非代码本身的内容;
- 列表的第一个元素,是程序本身,即第一个参数是程序文件的路径名称,之后才是外部传入的参数,可以有多个。
示例(test_argv.py)
- 查看test_argv.py内容,不传入参数执行代码,默认第一个参数是程序本身
# 查看程序代码
XZ:learn xz$ cat test_argv.py
#!/usr/bin/env python3
# test sys_argv
import sys
a=sys.argv
print(a[0])
# 不传入参数,执行代码
XZ:learn xz$ python test_argv.py
test_argv.py
- 查看test_argv.py内容,传入多个参数执行代码,并打印参数列表
# 查看程序代码
XZ:learn xz$ cat test_argv.py
#!/usr/bin/env python3
# test sys_argv
import sys
a=sys.argv
print(a)
# 传入的多个参数为一句话:what are you ?
XZ:learn xz$ python test_argv.py what are you ?
['test_argv.py', 'what', 'are', 'you', '?']
- 查看test_argv.py内容,传入多个参数执行代码,打印第2个参数之后的参数
# 查看程序代码
XZ:learn xz$ cat test_argv.py
#!/usr/bin/env python3
# test sys_argv
import sys
a=sys.argv
print(a[2:])
# 打印后3个参数
XZ:learn xz$ python test_argv.py a b c d
['b', 'c', 'd']
应用场景
- 一个Python模块test.py,包含一个定义的方法:获取斐波那契数列
XZ:~ xz$ cat test.py
import sys
def fib(n):
result = []
a, b = 0, 1
while a < n:
result.append(a)
a, b = b, a + b
return result
if __name__ == "__main__":
f = fib(int(sys.argv[1]))
print(f)
XZ:~ xz$ python test.py 1000
[0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987]