gpt4 book ai didi

python - python 中 exec 内的赋值

转载 作者:行者123 更新时间:2023-11-30 22:14:53 25 4
gpt4 key购买 nike

我正在尝试使用 PyQt5 构建计算器,我得到了需要评估的字符串并将其分配给一个变量,以便我可以将该变量作为答案传递给小部件。到目前为止,我可以评估该表达式,但无法评估它。我怎样才能做到这一点 ?到目前为止我有以下代码:-

# this functions gets called when Enter is pressed
def etrp(self):
eqn = self.sender().text() #I get string like '23+4'
eqn1 = "{0} = {1}".format("global x",eqn) #I make it x = 23+4
x = 0
exec(eqn1) # I get error here
print(x)
#some code .....

当我尝试在没有全局的情况下运行它时,它运行时没有错误,但 x 仍然为 0,如果我像这样运行它,我会收到此错误:-

qt5ct: using qt5ct plugin
global x = 12+32
Traceback (most recent call last):
File "/home/orayan/Development/Python/Calculator/calculator.py", line 11, in etrp
exec(eqn1)
File "<string>", line 1
global x = 12+32
^
SyntaxError: invalid syntax
[1] 19185 abort (core dumped) ./main.py

我对 python 很陌生,所以不知道发生了什么

最佳答案

global x = 5

不是有效的 python 代码。

如果你想给全局变量x赋值,你应该这样写

global x
x = 5

尝试将代码更改为

global x
eqn1 = "{0} = {1}".format("x",eqn)
x = 0
exec(eqn1, globals())

要使用exec修改全局变量,需要使用globals()功能。

编辑:添加 globals() 函数。

关于python - python 中 exec 内的赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50390877/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com