python - 如何从def函数获取变量到全局?
问题描述
我已经定义了一个函数,但我无法将变量从定义函数调用到global
.
请帮我解决这个问题。
这是我的代码:
def pdf_btnClicked():
PathOfPDF = askopenfile()
PDFFILE = PathOfPDF.name
print(PDFFILE)
book = open(PDFFILE, 'rb')
解决方案
只要您使用 Python,就可以global
在本地范围内声明变量时使用关键字。使用它将使您的变量成为全局变量,您的代码将如下所示:
def pdf_btnClicked():
global PDFFILE
PathOfPDF = askopenfile()
PDFFILE = PathOfPDF.name
print(PDFFILE)
book = open(PDFFILE, 'rb')
查看代码我们可以推断您的问题与变量范围的概念有关。
任何编程中的作用域都是程序的一个区域,其中定义的变量可以存在,并且超出该变量不能访问。基本上有两种类型的变量关于它的范围:
- 在称为局部变量的函数或块内
在这种情况下,如果您在函数内声明一个变量,您将无法在该函数外使用它。这正是您的情况:您PDFFILE
在pdf_btnClicked
函数中声明了变量,因此您只能在其中使用变量。但即便如此,你还是在它之外调用变量。您的问题的一个基本解决方案是设置PDFFILE
为全局变量,其解释如下。
- 在称为全局变量的所有函数之外
全局变量,顾名思义,是全局的,可以被所有函数访问。如果您PDFFILE
在函数之外(和之前)声明,您的问题将得到解决
Obs.:在这里我们看到了变量范围的两种基本类型,但根据编程语言,可能不止两种
字体:https ://www.tutorialspoint.com/cprogramming/c_scope_rules.htm https://www.w3schools.com/python/python_scope.asp
推荐阅读
- flutter - Flutter:如何使用弯曲的抽屉进行自定义
- r - 使用 lapply 执行回归时出错:可变长度不同(为“x”找到)
- r - 创建一个带有标题的空 Plotly 图在 R 闪亮的应用程序中不显示标题但完全空白
- python - 根据列名结尾拆分 pandas df
- java - 为什么我的输出没有显示我的输入?
- jenkins-pipeline - 是否可以通过管道在代理/节点上设置环境变量的值?
- javascript - Vue Props Undefined(从 laravel Blade 解析 props)
- db2-luw - DB2 LUW-Json_Table 函数语法错误
- java - 使用场景形式将画廊中的位图放置在墙上
- php - 用于运行 PHP 服务的 XAMPP 虚拟主机