【问题标题】:global keyword in pythonpython中的全局关键字
【发布时间】:2019-05-12 08:42:34
【问题描述】:

我正在研究 python,并且在vscode 中遇到了 global 关键字。到目前为止代码正在运行,但 vscode linter 引发错误,我想了解原因

我尝试过使用 global 关键字,即使出现 linter 错误,代码也能正常工作。我尝试使用局部变量并没有收到任何错误

def whatIs ():
    global myvalue
    myvalue +=10
    print("myvalue: {}".format(myvalue))

myvalue=10

whatIs()

print("myvalue: {}".format(myvalue))

linter 指向函数中的myvalue

未定义变量 'myvalue' pylint(undefined-variable)

但输出是我所期望的。

myvalue: 20
myvalue: 20

好像vscode 不喜欢全局关键字

【问题讨论】:

  • linter 正在从顶部检查代码。当它检查whatIs 方法时,它并不知道全局变量myvalue 将在以后被定义。
  • 为什么要使用global是第一个问题?您可以传递参数并以最简单易读的方式返回结果。
  • pylintglobal 进行自动例外处理。根据它的规则,你永远没有权利使用它。这只是一种正确的,而不是所有的时间。

标签: python visual-studio-code global


【解决方案1】:

试着移动这条线

myvalue=10

WhatIs 函数定义之前。

myvalue=10

def whatIs ():
    global myvalue
    myvalue +=10
    print("myvalue: {}".format(myvalue))

whatIs()

print("myvalue: {}".format(myvalue))

【讨论】:

    【解决方案2】:

    在 python 中使用全局变量被认为是不好的做法。一个简单的解决方法是将函数调用保存为像这样的变量。

    def whatIs(myvalue):
        myvalue +=10
        print(myvalue)
        return myvalue
    
    result = whatIs(10)
    print(result)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多