Python-如何访问函数外部的变量?
我试图从函数外部访问变量。我添加了Python-如何访问函数外部的变量?,python,pyqt,pyqt4,Python,Pyqt,Pyqt4,我试图从函数外部访问变量。我添加了global sayac和global sayi(从其他相关问题中可以看到),但我仍然无法访问它们。以下是我对该计划有意见的部分: def guesss(self): global tahmin global sayac tahmin=self.tahminn.text() sayac=sayac +1 tahmin = int(tahmin) if tahmin==sayi: self.durum
global sayac
和global sayi
(从其他相关问题中可以看到),但我仍然无法访问它们。以下是我对该计划有意见的部分:
def guesss(self):
global tahmin
global sayac
tahmin=self.tahminn.text()
sayac=sayac +1
tahmin = int(tahmin)
if tahmin==sayi:
self.durum.setText ("Tahmininiz doğru!")
QtGui.QMessageBox.warning(None,"Tahmininiz doğru","Doğru sayıyı ",sayac," denemede buldunuz!")
self.tahminett.setEnabled(False)
self.tahminn.setEnabled(False)
self.ybaslatt.show()
elif tahmin>sayi:
self.durum.setText("Tahmininiz doğru sayıdan büyük.")
elif tahmin<sayi:
self.durum.setText("Tahmininiz doğru sayıdan küçük.")
else:
QtGui.QMessageBox.warning(None,"Geçersiz sayı","Sadece 1 ile 100 arasında bir sayı girebilirsiniz.")
def猜测(自):
全球塔明
全球sayac
tahmin=self.tahmnn.text()
sayac=sayac+1
tahmin=int(tahmin)
如果tahmin==sayi:
self.durum.setText(“Tahminiz doğru!”)
QtGui.QMessageBox.warning(无“Tahminiz doğru”,“doğru sayıyı”,sayac,“denemede buldunuz!”)
self.tahminett.setEnabled(False)
self.tahmnn.setEnabled(False)
self.ybaslatt.show()
elif tahmin>sayi:
self.durum.setText(“Tahminiz doğru sayıdan büyük.”)
埃利夫·塔米萨伊:
self.durum.setText(“Tahminiz doğru sayıdan büyük.”)
elif tahmin我建议在声明变量的地方和使用变量之前都尝试使用global关键字。每当我在使用全局变量时遇到问题时,我都会这样做。当我提出问题时,通常最好将问题本身包括在内,并说明事情的意外行为以及预期结果
关于global
需要记住的主要一点是,它不会创建变量。它只通知编译器这些名称属于外部作用域(模块级而非函数)。因此,组合如下:
global sayac
sayac=sayac +1
要求已将sayac
设置为您可以添加的内容。代码实际上没有设置它们的初始值
此外,baslat_btn
似乎至少存在两个问题:
def baslat_btn(self):
sayac=0
#...
sayi=random.randint(0,100)
#...
return sayi
return sayac
首先,在这个函数中没有global
语句。因此,这两个变量的作用域是局部的。第二,函数只能返回一次,因此只返回sayi
,尽管这个返回值似乎没有使用过
最后,为什么要使用全局范围?您的所有逻辑似乎都包含在一个Ui\u主窗口中
对象;没有理由它也不能控制国家。考虑到它与主窗口的联系有多紧密,一些编码风格会使它成为QMainWindow的子类 与其尝试使用全局变量修复程序,我建议改为在函数中传入和返回变量。全局变量是危险的,通常会导致不清楚、难看的非模块化代码。为什么在类中使用全局变量,不能将它们设置为属性?我使用了QtDesigner和pyuic,它将表单转换为python代码,我没有做任何更改。也感谢大家的回答。
def baslat_btn(self):
sayac=0
#...
sayi=random.randint(0,100)
#...
return sayi
return sayac