Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python-如何访问函数外部的变量?_Python_Pyqt_Pyqt4 - Fatal编程技术网

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