在Pycharm中,声明为全局变量的局部函数内不自动补全

2 投票
1 回答
1833 浏览
提问于 2025-04-18 07:39

在使用 pycharm 3.1 和 python3 的时候,如果我输入一些简单的代码,比如

v = ['z', 'e', 't', 'z']
def foo():
    v.sort()
    print(v)

它会很顺利地自动补全,识别出 v 是一个列表,并且在自动补全的结果中显示 sort() 方法。

但是如果这个变量是在函数内部定义的,pycharm 就不再把它识别为列表,也不会进行自动补全。

v = ['z', 'e', 't']
def foo():
    global v
    v.append('o')
    v.sort()
    print(v)

在函数内部的任何地方,即使我在 v 前面加上 global,pycharm 也不会自动补全这个变量 v。

这是因为 python 本身有什么逻辑原因我不知道吗?还是说这可能是 pycharm 的一个 bug?

1 个回答

0

我试了你给的例子,使用了 ipython,发现自动补全功能正常,所以这可能是pycharm的问题。

需要注意的是,在Python中不太推荐使用全局变量,除非你有非常好的理由。

撰写回答