def fn_with_long_name(n):
return n
def case_1():
if (x := fn_with_long_name(2)) == 2:
print("a", x)
else:
print("b", x)
# 什么?这里多了个变量 x ?
def case_2():
x = 100
if (x := fn_with_long_name(2)) == 2:
print("a", x)
else:
print("b", x)
# 啊? x 在上面哪改了
assert x != 100
def case_3():
x = fn_with_long_name(3)
if x == 2:
print("a", x)
else:
print("b", x)
我觉得声明变量藏在条件语句中,这也太难找了吧, 一不留神多了个变量;更怕覆盖了之前的值,因为这种写法让我以为声明的变量的作用域是 if 块。 所以我的暴论是:我各种情况下一概不用,也不看它的适用场景了;毕竟 python zen 中说:
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.