EX13: Parameters, Unpacking, Variables
-
例子:
from sys import argv script, first, second, third = argv print("The script is called:", script) print("Your first variable is:", first) print("Your second variable is:", second) print("Your third variable is:", third)
-
学习内容:
argv
-
改变代码(寻找可能情况及错误)
-
脚本输入参数与要求输入个数不符
输入:
from sys import argv script, first, second, third = argv print("The script is called:", script) print("Your first variable is:", first) print("Your second variable is:", second) print("Your third variable is:", third)
结果:
- 不写参数
python TEST.py Traceback (most recent call last): File "TEST.py", line 2, in <module> script, first, second, third = argv ValueError: not enough values to unpack (expected 4, got 1)
值错误:进行解包的参数个数不够(规定四个,只输入了一个)
不输入参数也能有一个参数的原因是:
TEST.py
会默认成为一个参数。- 写入少于要求个数的参数
python TEST.py 1 2 Traceback (most recent call last): File "TEST.py", line 2, in <module> script, first, second, third = argv ValueError: not enough values to unpack (expected 4, got 3)
- 写入超过要求个数的参数
python TEST.py 1 2 3 4 Traceback (most recent call last): File "TEST.py", line 2, in <module> script, first, second, third = argv ValueError: too many values to unpack (expected 4)
值错误:进行解包的参数过多。
-
不限定
argv
的参数个数输入:
from sys import argv print(">>>> 访问整个参数列表: ", argv) print(">>>> 访问第二个参数: ", argv[1]) # import sys # print(">>>> 访问整个参数列表: ", sys.argv) # print(">>>> 访问第二个参数: ", sys.argv[1])
结果:
python TEST.py jdkasjl ajldajkdl asdadadsad >>>> 访问整个参数列表: ['TEST.py', 'jdkasjl', 'ajldajkdl', 'asdadadsad'] >>>> 访问第二个参数: jdkasjl
传递给
python
脚本的参数是以列表的形式存储在argv
中,如果没有参数名,可以通过列表索引访问,即argv[1]
或sys.argv[1]
,视import
形式而定 -
用
f-string
改写输入:
from sys import argv script, first, second, third = argv print(f"The script is called: {script}") print(f"Your first variable is: {first}") print(f"Your second variable is: {second}") print(f"Your third variable is: {third}")
结果:
python TEST.py 1 2 3 The script is called: TEST.py Your first variable is: 1 Your second variable is: 2 Your third variable is: 3
能够正常运行。
-
强制转换数据类型用在变量赋值时更好
输入:
from sys import argv script, first, second = argv first = int(first) print("Your first variable is:", first) print("Your second variable is:", int(second)) print("first数据类型: ", type(first))
结果:
python TEST.py 1 Your first variable is: 1 first数据类型: <class 'int'>
-