You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中无返回值return语句的作用及save方法改造方案

关于Bank类save方法的两个问题解答

问题1:save方法里无返回值的return语句有啥用?能删吗?

  • 作用:这个return是用来提前终止方法的。当调用save()时既没传fileName参数,实例自身的self.fileName又是None的话,要是没这个return,代码会跑到open(self.fileName, "wb")那一步——open根本不能拿None当文件名,直接就抛TypeError异常崩了。说白了这就是个简单的防御性校验,缺必要参数就直接退,别往下走搞出错误。
  • 能不能删?绝对不能直接删。删了之后刚才说的场景下肯定报错。要是真想去掉这个return,得补上对应的异常处理或者额外的参数检查(比如主动抛个明确的错误提示),但原代码就是用return快速退出,属于简洁的写法。

问题2:怎么改save方法,让它在缺文件名时提示用户输入?

用Python的input()函数就能实现,在缺少文件名的分支里加个输入提示,拿到用户输入的文件名后赋值给self.fileName,再继续执行保存逻辑。修改后的代码如下:

import pickle

def save(self, fileName = None):
    """Saves pickled accounts to a file. The parameter
    allows the user to change filenames."""
    if fileName != None:
        self.fileName = fileName
    elif self.fileName == None:
        # 提示用户输入文件名
        self.fileName = input('Please provide a name for the file to be saved: ')
        # 可选:防止用户输入空字符串,循环提示直到输入有效内容
        while not self.fileName.strip():
            self.fileName = input('File name cannot be empty. Please enter again: ')
    # 改用with语句自动管理文件,避免手动关闭的遗漏
    with open(self.fileName, "wb") as fileObj:
        for account in self.accounts.values():
            pickle.dump(account, fileObj)

补充说明:

  • 调用bank.save()且无传入文件名、实例fileName为None时,会弹出输入提示;
  • 加了空输入校验,避免用户输空字符串导致后续操作出错;
  • 把原代码的open+close改成with语句,不用手动关文件,更安全也更简洁;
  • 用户输入的文件名会存在self.fileName里,之后再调用save()不传参数的话,会直接用这个文件名。

内容的提问来源于stack exchange,提问作者Nemo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 11:58:14