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

2024-10-01 02:18:13 发布

您现在位置:Python中文网/ 问答频道 /正文

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

请帮我解决这个问题

这是我的密码:

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

book = open(PDFFILE, 'rb')

Tags: 函数name密码定义pdfdeffunctionglobal
3条回答

只要您使用Python,就可以在局部作用域上声明变量时使用global关键字。使用它将使变量变为全局变量,代码如下所示:

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

book = open(PDFFILE, 'rb')

查看代码,我们可以推断您的问题与变量范围的概念有关

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

  1. 在称为局部变量的函数或块内部

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

  1. 在所有称为全局变量的函数之外

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

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

字体:https://www.tutorialspoint.com/cprogramming/c_scope_rules.htmhttps://www.w3schools.com/python/python_scope.asp

正确的代码

def pdf_btnClicked():
    global PDFFILE
    PathOfPDF = askopenfile()
    PDFFILE = PathOfPDF.name
    print(PDFFILE)
    
book = open(PDFFILE, 'rb')

您需要的是global关键字

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

# You need to call `pdf_btnClicked()` function
book = open(PDFFILE, 'rb')

相关问题 更多 >