首页 > 解决方案 > Python:如何返回函数内的变量?

问题描述

对于入门项目,我正在尝试编写一段代码,该代码将打开一个 GUI,该 GUI 可用于选择 PDF 文件路径,然后读取该文件路径并将其保存到变量中。目前我正在返回一个函数的结果,然后尝试打印该函数。这一定不是我真正想做的,因为当我打印函数时,我实际上是在再次运行它,而不是仅仅打印返回的字符串。最好的解决方案是将返回的字符串保存到函数内的变量中,然后稍后将其调用到 print 语句中吗?

诚然,我对自己在做什么缺乏基本的了解,而且我几乎所有的代码都是从其他人发表的 50 篇帖子中提取的。我很抱歉用这样的低级问题向董事会发送垃圾邮件,但我在创建搜索以找到我理解的答案时遇到了麻烦。这是我目前的代码....

import PyPDF2
import tkinter
    
from tkinter import filedialog
    
root = tkinter.Tk()
root.withdraw()
    
def key_search():
    filename = filedialog.askopenfilename(parent=root, title='Choose File Path')  # Credit: https://stackoverflow.com/questions/3643418/storing-file-path-using-windows-explorer-browser-in-python
    with open(filename, mode='rb') as f: #rb = read only binary, 'f' is a custom file object. Credit: https://www.soudegesu.com/en/post/python/extract-text-from-pdf-with-pypdf2/
        reader = PyPDF2.PdfFileReader(f)
        for page in reader.pages:
            return(page.extractText())
    
print(key_search())

标签: python-3.xfunctionreturn

解决方案


这里有两点需要改进,首先,如果你想保存函数的结果,你可以把它保存到这样的变量中

result = key_search()
print(result)

第二,请注意,当您return从一个函数中退出时,它会在那一刻退出该函数。假设reader.pages有 5 页,您的函数当前读取第一个并退出。如果您想阅读所有这些,您首先需要将结果保存到列表中,然后返回列表

results = []
for page in reader.pages:
    results.append(page.extractText())
return results # Notice you dont need parentheses here

然后您可以打印所有结果

pages = key_search()
for page in pages:
    print(page)
  • 有更多标准/有效的方法来做这些事情,但既然你才刚刚开始,最好像这样更清楚地看到事情

推荐阅读