Python:使用全局变量的语法无效



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

我正在试着做一个计算器,它能计算+,-,*,/。它还应该给出一条错误消息,并在收到的操作符号无效时请求新的操作符号。为了让计算机知道函数"main"是因为接收到无效函数而运行的,还是第一次运行,我尝试使用一个名为"check"的全局变量。开始时,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()

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

global check = 1

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

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

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

def main():
global check

像这样使用

check=10
def function() : 
global check
if(check==1):
#blablabla

全局关键字可以帮助您为功能带来价值。。。那么,在你的函数中再次使用它是无用的,也是没有必要的。。。

为了简单起见,global帮助你把你的朋友带到家里,然后你就没有必要再带他了,因为他已经在这里了。。。

在函数外和函数内定义的任何同名变量默认情况下分别为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

相关内容

  • 没有找到相关文章

最新更新