找不到与我的问题相关的答案。 示例:var1,var2,var3 = argv 解压缩argv []列表
查阅了Google和Python 2.7文档
答案 0 :(得分:1)
这称为序列解包,并在section 5.3 of the Python tutorial的结尾处提到:
语句
t = 12345, 54321, 'hello!'
是元组的示例 包装:将值12345
,54321
和'hello!'
打包在一起 元组。反向操作也是可能的:>>> x, y, z = t
这被适当地称为 sequence unpacking ,适用于右侧的任何序列。顺序 解压缩要求左侧有尽可能多的变量 等号的符号,因为序列中有元素。注意 多重分配实际上只是元组包装和 序列解压缩。
答案 1 :(得分:1)
使用以下方法打开包装:
var1, var2, var3 = argv
相当于这样做:
var1 = argv[0]
var2 = argv[1]
var3 = argv[2]
区别在于,如果argv所包含的项目多于(或少于)您提供的变量数量(我假设argv仅包含3个元素),则解压缩将失败。
答案 2 :(得分:0)
在Python中,如果您有列表,元组或其他可迭代的对象,则可以将其中的单独项目分配给左侧的变量。
例如:
>>> mylist = [1, 2, 3]
>>> one, two, three = mylist
>>> one
1
>>> two
2
>>> three
3
赋值左侧的变量现在包含右侧可迭代项。这确实需要您在左侧具有正确数量的变量,才能将右侧的可迭代项放入其中。
这在循环中非常方便:
>>> data = [("filename1.txt", 1024),
>>> ("filename2.txt", 2048),
>>> ("filename3.txt", 512)]
>>> for name, size in data:
>>> print(name, "is", size, "bytes")
filename1.txt is 1024 bytes
filename2.txt is 2048 bytes
filename3.txt is 512 bytes
这里发生的是,对于数据变量中的每个项目,每次运行{{1}时,单独的项目(字符串和int)都被解压缩到变量name
和size
中}}循环。
在特定情况下,for
包含从命令行运行脚本时传递的参数。您可以将参数解压缩为变量,这就是您在示例中所做的。
答案 3 :(得分:0)
解压将在不同的左参数内分配右参数的不同值。
因此,如果您有CREATE OR REPLACE FORCE VIEW MGR.V_INDEX_PERFORMANCE
(
INDEX_ID ,
INDEX_NAME,
MTD,
YTD
)
BEQUEATH DEFINER
AS
SELECT "INDEX_ID" ,
"INDEX_NAME",
"MTD",
"YTD" from MIS_PERMAL.MV_INDEX_PERFORMANCE
where INDEX_ID in (1045, 2005) AND FIELD_CODE = 'TR' AND CCY_CODE IN ('D', 'USD') order by INDEX_ID, price_date desc;
,可以这样做:a=[0,1,2]
。结果,a0,a1,a2 = a
等于a0
,a[0]
到a1
等。
希望有帮助!
答案 4 :(得分:0)
与答案相反
您不需要在左侧具有正确数量的参数,如果您指定一个参数以“获取其余部分”(称为"Extended Iterable Unpacking"),则可以减少参数的数量:
k, l, *i, x = range(20)
print(k)
print(l)
print(i) # *i catches all hat are not otherwise matched
print(x)
输出:
0 # k
1 # l
[2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18] # *i
19 # x