大家帮看看问题在哪

2019-03-08 12:59:13 +08:00
 imgse
大家帮我看看,这个啥错误。
def ss():
global t
print(t)
t=True

t=False
ss()

在 vscode 里面一直报错:
Using variable 't' before assignment

提示未声明,但一开始用 global 声明了。运行起来也没问题,大家帮我看看问题在哪?
2099 次点击
所在节点    Python
13 条回复
aiver
2019-03-08 13:17:29 +08:00
t = False 语句放到函数 ss 定义的前面
wallriding
2019-03-08 13:18:49 +08:00
assignment 的意思不是“声明”,是“赋值”
ballshapesdsd
2019-03-08 13:20:20 +08:00
可能 vscode 还没有那么智能吧,智能检测到在 ss 函数里没有对 t 赋值
imgse
2019-03-08 13:34:11 +08:00
@wallriding 写错了
imgse
2019-03-08 13:35:46 +08:00
@aiver 这样写也不算错啊,我感觉是 vscode 的 linter 有错误。
Johnson66
2019-03-08 13:36:34 +08:00
你这个格式~~!!
gstqc
2019-03-08 13:38:30 +08:00
你们没缩进也能看得懂,好厉害!!!
catalina
2019-03-08 13:42:10 +08:00
@gstqc 长一点就看不懂了(笑)
imgse
2019-03-08 14:03:05 +08:00
@gstqc 编辑了好几次,一发布就把空格给我取消了。
jingxyy
2019-03-08 14:57:28 +08:00
不用管它,py 这种语言 linter 能发挥的功能很有限,写几个 meta class 的它就看不懂了。
就 lz 的这个例子,也不一定说你写的这个就完全没问题,万一
t = False
#...(好多 code)...
del t
#...(好多 code)...
#...(好多 code,然后你忘了你已经 del 了)...
ss()
你猜结果会是什么样?
antipro
2019-03-08 15:33:27 +08:00
现在明白大括号的用处了吧。
wuyifar
2019-03-08 18:24:56 +08:00
一样的代码,一样是 VScode 直接运行没有报错
ashCloud
2019-03-12 16:55:07 +08:00
你的声明现在函数里了,函数是后调用的。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/542468

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX