有人可以向我解释这种行为:
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???
谢谢
("email")
不是元组。它只是带括号的字符串。
您需要放置一个逗号使其成为一个元组:
REQUIRED_USER_FIELDS = ("email",)
# here--^
否则,您的for循环将遍历字符串"email"
本身。
您应该记住,创建元组的是逗号,而不是括号(如果有):
>>> ("email")
'email'
>>> "email"
'email'
>>> ("email",)
('email',)
>>> "email",
('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')
>>>
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句