Python中if语句中元组变量的作用域
如果不使用Python中if语句中元组变量的作用域,python,if-statement,scope,tuples,Python,If Statement,Scope,Tuples,如果不使用tuple()和list()函数,如何访问在if/else语句中初始化的元组 我有以下代码: if x > y: foo = (a, b) elif y > x: foo = (b, a) (tmp1, tmp2) = foo 但是python返回:UnboundLocalError:赋值之前引用的局部变量“foo” 在其他编程语言中,可以在语句外初始化变量,但是这种情况如何 重要:我需要使用元组,而不是列表 更新:我不需要大小写x==y,因此我更改了代
tuple()
和list()
函数,如何访问在if/else语句中初始化的元组
我有以下代码:
if x > y:
foo = (a, b)
elif y > x:
foo = (b, a)
(tmp1, tmp2) = foo
但是python返回:UnboundLocalError:赋值之前引用的局部变量“foo”
在其他编程语言中,可以在语句外初始化变量,但是这种情况如何
重要:我需要使用元组,而不是列表
更新:我不需要大小写x==y
,因此我更改了代码,添加了进一步的条件:
foo = None
if x > y:
foo = (a, b)
elif y > x:
foo = (b, a)
if foo != None:
(tmp1, tmp2) = foo
更新2:或者类似地:
if x > y:
foo = (a, b)
elif y > x:
foo = (b, a)
else:
foo = ()
if len(foo) > 0:
(tmp1, tmp2) = foo
在一行中,假设您忘记了代码中的大小写
x==y
:
(tmp1, tmp2) = (a, b) if x > y else (b, a)
但是如果您想保留语法,请不要忘记=
条件
if x > y:
foo = (a, b)
else:
foo = (b, a)
(tmp1, tmp2) = foo
(根据@Daniel Roseman的回答编辑)在一行中,假设您在代码中忘记了大小写
x==y
:
(tmp1, tmp2) = (a, b) if x > y else (b, a)
但是如果您想保留语法,请不要忘记=
条件
if x > y:
foo = (a, b)
else:
foo = (b, a)
(tmp1, tmp2) = foo
(在@Daniel Roseman的回答之后编辑)这应该行得通,但尝试在if-else块之前显式声明foo
x=3
y=2
a=1
b=2
foo=None #tell python foo must be reserved at this scope level
if x > y:
foo = (a, b)
elif y > x:
foo = (b, a)
elif y == x: #need to remember this case
foo = (b, a)
(tmp1, tmp2) = foo
这应该可以工作,但请尝试在if-else块之前显式声明foo
x=3
y=2
a=1
b=2
foo=None #tell python foo must be reserved at this scope level
if x > y:
foo = (a, b)
elif y > x:
foo = (b, a)
elif y == x: #need to remember this case
foo = (b, a)
(tmp1, tmp2) = foo
Python没有块作用域。元组和列表函数在这里是不相关的,选择使用哪种类型也是不相关的
这里未定义foo的唯一原因是您忘记了一个条件:当x和y相等时。Python没有块作用域。元组和列表函数在这里是不相关的,选择使用哪种类型也是不相关的
这里没有定义foo的唯一原因是您忘记了一个条件:当x和y相等时。是的,我知道,但我不需要这个条件。无论如何,我已经解决了添加一个更进一步的条件:
if-edge!=无:…
。谢谢。是的,我知道,但我不需要那个条件。无论如何,我已经解决了添加一个更进一步的条件:if-edge!=无:…
。非常感谢。