gpt4 book ai didi

赋值运算符左侧的Python多个变量

转载 作者:太空狗 更新时间:2023-10-29 21:45:40 25 4
gpt4 key购买 nike

有人可以解释一下在变量名的左侧有一个逗号分隔链(可能不是正确的术语,但我不想将它与 list 混淆)的概念赋值运算符?

我指的是以下性质的东西

reader = csv.reader(open('some_file', 'rb'))
for row in reader:
k, v = row
myDictionary[k] = v

我知道这个例子可能会导致“some_file”的格式问题,所以这是我遇到的另一个例子

username, password = sys.argv[1:]

我理解argv来自命令行,1:指的是python脚本名后的所有参数,但是username和password如何获取正确项?换句话说,是什么分隔了传递给这个程序的参数,它只是参数之间的空格吗?

引用第一个例子,kv如何从row获取它们的值,假设row 是两列线。那些使用逗号作为分隔符吗?

任何解释和/或指向 Python 代码或文档的链接都会很棒。

最佳答案

k, v = row

username, password = sys.argv[1:]

sequence unpacking的例子.序列拆包要求赋值运算符左侧的变量数与右侧序列的元素数相同。如果他们这样做,序列的第一个元素被分配给第一个变量,第二个分配给第二个,依此类推。如果它们不相等,则会抛出值错误。

str、unicode、list、tuple、bytearray、buffer、xrange 都是有效的序列,可以用在运算符的右侧。


剩下要了解的是“行”和 sys.argv[1:] 是否是具有 2 个元素的有效序列。

csv.reader()将 csv 的每一行作为字符串的列表返回。所以这是一个有效的序列。如果 csv 有 2 列,列表将有 2 个元素。默认情况下,csv.reader 使用逗号作为分隔符。如果需要,您可以指定不同的分隔符:

csv.reader(csv_file, delimiter='|')

对于 Python 的每次调用,sys.argv自动是一个 list 字符串,表示命令行上的参数(以空格分隔)。所以又是一个有效的序列。 argv[0] 始终是脚本名称。因此,如果用户使用 2 个参数运行程序,则用户名后跟密码 sys.argv[1:] 将是所需的 2 个元素的列表。

关于赋值运算符左侧的Python多个变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36868393/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com