python-3.x - 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())
解决方案
这里有两点需要改进,首先,如果你想保存函数的结果,你可以把它保存到这样的变量中
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)
- 有更多标准/有效的方法来做这些事情,但既然你才刚刚开始,最好像这样更清楚地看到事情
推荐阅读
- java - 纹理动画和绘制调用性能 | OpenGLES 2.0 + Java
- sql - T-SQL 读取带有命名空间的 xml 文件
- mysql - 获取每个朋友的所有最后一条消息 - SQL
- c# - 通过 C# 和 SqlClient 与 SQL localhost 服务器建立连接 - 不是数据库连接
- java - 带有清除的 ScheduledFuture cancel(true) 仍然执行
- database - 从 db 获取进程列表并杀死它 CMD
- python - 直方图不适用于 Python;木星; 卡在加载中
- python - python -m venv
在 Windows 上失败 - android - 设置 LinearLayout 相对于同一容器中其他 LinearLayout 的高度
- r - R 根据几个调用的 REST URL 生成数据框