首页 > 解决方案 > 如何从def函数获取变量到全局?

问题描述

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

请帮我解决这个问题。

这是我的代码:

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

book = open(PDFFILE, 'rb')

标签: pythonfunctiontkinter

解决方案


只要您使用 Python,就可以global在本地范围内声明变量时使用关键字。使用它将使您的变量成为全局变量,您的代码将如下所示:

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

book = open(PDFFILE, 'rb')

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

任何编程中的作用域都是程序的一个区域,其中定义的变量可以存在,并且超出该变量不能访问。基本上有两种类型的变量关于它的范围:

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

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

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

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

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

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


推荐阅读