Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/360.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 如何从def函数获取变量到全局变量?_Python_Function_Tkinter - Fatal编程技术网

Python 如何从def函数获取变量到全局变量?

Python 如何从def函数获取变量到全局变量?,python,function,tkinter,Python,Function,Tkinter,我已经定义了一个函数,但是我无法将变量从define函数调用到global函数 请帮我解决这个问题 这是我的密码: def pdf_btnClicked(): PathOfPDF = askopenfile() PDFFILE = PathOfPDF.name print(PDFFILE) book = open(PDFFILE, 'rb') 正确代码 你需要的是全局关键字 Pdfile= def pdf_btnClicked: 全局PDFFILE PathOfPDF

我已经定义了一个函数,但是我无法将变量从define函数调用到global函数

请帮我解决这个问题

这是我的密码:

def pdf_btnClicked():
    PathOfPDF = askopenfile()
    PDFFILE = PathOfPDF.name
    print(PDFFILE)

book = open(PDFFILE, 'rb')
正确代码

你需要的是全局关键字

Pdfile= def pdf_btnClicked: 全局PDFFILE PathOfPDF=askopenfile PDFFILE=PathOfPDF.name 印刷品 您需要调用'pdf\u btnClicked'函数 book=openPDFFILE,“rb”
只要使用Python,就可以在局部范围上声明变量时使用global关键字。使用它将使变量变为全局变量,代码如下所示:

def pdf_btnClicked():
   global PDFFILE
   PathOfPDF = askopenfile()
   PDFFILE = PathOfPDF.name
   print(PDFFILE)

book = open(PDFFILE, 'rb')
查看代码,我们可以推断您的问题与变量范围的概念有关

任何编程中的作用域都是程序的一个区域,在该区域中,定义的变量可以存在,超过该变量则无法访问。基本上,就其范围而言,有两种类型的变量:

在称为局部变量的函数或块中 在这种情况下,如果在函数内部声明变量,则无法在该函数外部使用它。这正是您的情况:您在pdf_btnClicked函数中声明了变量PDFFILE,因此只能使用该函数中的变量。但即便如此,您还是在调用它之外的变量。问题的基本解决方案是将Pdfile设置为全局变量,其解释如下

在称为全局变量的所有函数之外 顾名思义,全局变量是全局变量,可以被所有函数访问。如果您在函数外部声明PDFFILE,在声明之前,您的问题将得到解决

Obs.:这里我们看到了变量作用域的两种基本类型,但根据编程语言的不同,变量的作用域可能不止两种

字体:

您需要将全局Pdfile添加为函数的第一行。除了全局问题,如果您只需要文件名,最好使用askopenfilename而不是askopenfile。我称为“pdf_btnClicked”函数,但它不起作用。我不确定您为什么要链接到有关C范围规则的教程。Python的作用域规则可能类似,但有一些关键的区别是了解C的规则所不能得到的。
def pdf_btnClicked():
   global PDFFILE
   PathOfPDF = askopenfile()
   PDFFILE = PathOfPDF.name
   print(PDFFILE)

book = open(PDFFILE, 'rb')