Python 如何从def函数获取变量到全局变量?
我已经定义了一个函数,但是我无法将变量从define函数调用到global函数 请帮我解决这个问题 这是我的密码: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
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')