【问题标题】:Python: Invalid Syntax Using Global VariablePython:使用全局变量的无效语法
【发布时间】:2017-06-22 16:39:24
【问题描述】:

首先,我必须告诉你,我对编码完全陌生,所以我遇到的问题可能是由有史以来最愚蠢的错误引起的,如果是这样,我很抱歉!

我正在尝试制作一个能够计算 +、-、*、/ 的计算器。 如果收到的操作符号无效,它也应该给出错误消息并要求新的操作符号。为了让计算机知道函数“main”是否正在运行,因为它收到了一个无效的函数,或者如果它是第一次运行,我正在尝试使用一个名为“check”的全局变量。开始时,检查设置为 1,因此计算机在请求操作时将使用第一个短语。如果输入了一个无效的操作,变量“check”就会加一,当它要求一个新的操作时,这将导致第二个短语(错误信息)。

问题是当我尝试运行脚本时,第一行出现语法错误,其中“global check = 1”。我做错了什么?

下面是我的代码:

global check = 1

#returns num1 + num2
def add(num1,num2):
    return num1 + num2

#returns num1 - num2
def sub(num1,num2):
    return num1 - num2

#returns num1 * num2
def mul (num1,num2):
    return num1 * num2

#returns num1 / num2
def div (num1,num2):
    return num1 / num2

#Main Function
def main():
    if(global check == 1): #checks if "main" has been read before, if it has, then it is read agian because of invalid operation, and the global "check" should be higher than 1.
        operation = input("Choose an operation! (+,-,*,/")
    else:
        operation = input("You must choose a valid operation! (+,-,*,/")
    if(operation != "+" and operation != "-" and operation != "*" and operation != "/"):
        global check = global check + 1
        main()
    else:
        var1 = int(input("Enter number 1 :"))
        var2 = int(input("Enter number 2 :"))
    if(operation == "+"):
        print(add(var1,var2))
    elif(operation == "-"):
        print(sub(var1,var2))
    elif(operation == "*"):
        print(mul(var1,var2))
    else:
        print(div(var1,var2))


main()

【问题讨论】:

  • 我不明白为什么代码以这种方式显示,我没有那样输入它但它仍然是那样放置......
  • 这是因为SO使用了markdown。现在修好了。在我看来没有理由使用global:这里check 已经是全球性的......
  • 当你修复了这个问题后,还有其他几个地方你错误地放置了global。是关键字,不能在表达式中使用。
  • 感谢您的回复,它修复了该错误,但现在我在 if 语句的第 21 行得到它。您能否解释一下我应该在哪里使用 global 以及我不应该在哪里使用,以及为什么?

标签: python python-3.x syntax-error global-variables


【解决方案1】:

您将global 放在不需要的地方:

global check = 1

这里不需要global,这里check已经是global了。

if(global check == 1)global check = global check + 1 也不是global 的有效用法。

相反,在 main() 中将 check 声明为 global

def main():
    global check

【讨论】:

  • Reaper,感谢您的帮助,解决了它,但现在我在 if 语句中遇到语法错误:文件“calculator.py”,第 21 行 if(global check == 1): ^ SyntaxError: 无效语法
  • @Isac Skoglund 您只需在函数中使用一次global check,然后像if(check == 1):check += 1 一样使用check
【解决方案2】:

这样使用

check=10

def function() : 

     global check

     if(check==1):

           #blablabla

global 关键字可以帮助你为你的函数带来价值......然后在你的函数中再次使用它是没有用的和不必要的......

为简单起见,global 帮助您将朋友带回家,然后您无需再次带他,因为他已经在这里了...

【讨论】:

    【解决方案3】:

    在函数外部和函数内部定义的任何同名变量默认分别为globallocal。如果需要在函数内部更改global 变量值或需要将local 变量设置为global(适用于所有其他函数),则只需在函数内部显式定义'global'功能。

    示例:

    a=10
    
    
    def func1():
    global b
    global a
    print('initial global a',a)
    b=10
    a=15
    print('local and modified global a',a)
    
    
    def func2():
    print('global b, originated form func1',b)
    print('new global a, modified at func1',a)
    
    
    
    func1()
    func2()
    

    会给你结果:

    initial global a 10
    local and modified global a 15
    global b, originated form func1 10
    new global a, modified at func1 15
    

    注意:如果函数内localglobal变量名不冲突,则不需要在函数内声明global

    【讨论】:

    • 欢迎来到 StackOverflow! SO 社区试图收集精选的高质量答案,与所有人分享。在回答这些老问题时,你应该确保你的答案确实解决了原始问题,格式正确,并提供了新的价值。一些见解也可能更适合作为 cmets。您共享的代码无法编译,并且似乎没有直接提供新的输入。您可以尝试将主要思想浓缩成评论。
    猜你喜欢
    • 2012-10-17
    • 2020-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-24
    • 1970-01-01
    • 2017-07-25
    相关资源
    最近更新 更多