Python 为什么浏览循环中的元组会给我字符串的第一个字符?
有人能给我解释一下这种行为吗:Python 为什么浏览循环中的元组会给我字符串的第一个字符?,python,tuples,Python,Tuples,有人能给我解释一下这种行为吗: REQUIRED_USER_FIELDS = ["email"] for field in REQUIRED_USER_FIELDS: # field = 'email' -> OK for me, expected behaviour REQUIRED_USER_FIELDS = ("email") for field in REQUIRED_USER_FIELDS: # field = 'e' -> Why??? 谢谢。(“电子
REQUIRED_USER_FIELDS = ["email"]
for field in REQUIRED_USER_FIELDS:
# field = 'email' -> OK for me, expected behaviour
REQUIRED_USER_FIELDS = ("email")
for field in REQUIRED_USER_FIELDS:
# field = 'e' -> Why???
谢谢。(“电子邮件”)
不是元组。它只是括号中的一个字符串
您需要放置逗号使其成为元组:
REQUIRED_USER_FIELDS = ("email",)
# here--^
否则,for循环将遍历字符串“email”
本身
您应该记住,创建元组的是逗号,而不是括号(如果有): 但是,您经常看到括号的原因是:
>>> def func(arg):
... return arg
...
>>> # This fails because "a", "b" is treated as 2 separate arguments
>>> func("a", "b")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: func() takes 1 positional argument but 2 were given
>>>
>>> # This works because ("a", "b") is treated as 1 argument (a tuple)
>>> func(("a", "b"))
('a', 'b')
>>>
def func(参数):
... 返回参数
...
>>>#这失败了,因为“a”、“b”被视为两个独立的参数
>>>func(“a”、“b”)
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
TypeError:func()接受1个位置参数,但给出了2个
>>>
>>>#这是因为(“a”、“b”)被视为1个参数(元组)
>>>func((“a”、“b”))
(‘a’、‘b’)
>>>
只包含一个元素的元组需要编写如下
(something,)
您可以通过执行以下操作来确保:
>>> tuple(["email"])
('email',)
括号通常是区分元组逗号和其他类型的逗号所必需的,例如函数参数commata。@poke-注意。我会提到的。
>>> tuple(["email"])
('email',)