从方法返回元组

2024-03-21

我正在编写一个方法,成功时返回一个元组,但是None失败时。我还没有最终确定None(作为失败案例返回)但它是选择之一。我们可以回来吗-1,-1对于失败案例?我正在寻找最好的Pythonic方法来实现这一点,以便拆包很容易。

请让我知道我们如何改进它。下面给出伪代码

 def myFunc(self):
     if self.validate() != 0:
         return
     x,y = self.getXY()

     return x,y

如果失败了,为什么不抛出异常呢?

您当然可以返回 (-1, -1) 作为失败,但在我看来这不是一个好的解决方案。

请记住,在 Python 中,EAFP(请求宽恕比请求更容易)比 LBYL(三思而后行)更受青睐。

这意味着最好在一切正常的假设下编写代码,然后捕获适当的异常。

然后你的代码可能会变成

 def myFunc(self):
     if self.validate() != 0:
         raise CustomNotValidatedException()
     x,y = self.getXY()

     return x,y

我会通过以下方式改进您的代码:

  • 当结果不是正数时,让 self.validate() 返回 0,这样你就可以用更 Pythonic 的方式更改第二行:

     if not self.validate():
    
  • 去掉中间的x, y变量,将 return 语句更改为:

     return self.getXY()
    

最后,你可以在里面引发异常getXY()并在您的代码中直接使用此方法。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从方法返回元组 的相关文章

随机推荐

  • R - 检测到非树模型!此功能只能与树模型一起使用

    我是 R 新手 当我尝试跑步时xgb importance 我得到这个 Error in xgb model dt tree feature names feature names text text Non tree model dete
  • 当父溢出更改时,firefox 过渡会中断

    我今天遇到一个问题 花了我很长时间来调试 我在网上找不到解决方案 所以我认为记录下来会很有用 如果父级的 溢出 属性与转换一起更改 则转换似乎在 Firefox 上不起作用 即 parent overflow hidden parent h
  • 在 MVC 4 中将对象转换为 JSON

    我正在使用将对象转换为 JSONJavaScriptSerializer我可以在服务器代码中看到这个 JSON 输出 UserId 1 UserName Admin 但在用户界面中它被转换为如下所示 quot UserId quot 1 q
  • 不能在常量列表中使用变量索引

    使用设备建模语言 DML 1 4 版 我创建了一个列表参数 例如 param X 0 0 0 0 0 1 我想在使用变量的方法中访问它们 例如 method get var uint32 idx gt uint32 return X idx
  • 如何通过 ID 以外的方式获取 RESTful 资源?

    在某些情况下 我可能需要通过 ID 以外的参数来查找对象 正确的 RESTful 方法是什么 例如我可能想找到一个User by username and password 所以严格的 RESTful GET users 1 行不通 根据R
  • 加速 WPF 调整大小/重绘

    我注意到即使调整空 WPF 窗口的大小也会显示黑色区域 我桌面上的很多程序都没有这些问题 所以我想知道 有没有办法设置调整大小重绘优先级或其他东西 并加快 WPF 窗口大小的调整速度 或者这个问题是不可避免的 这是 WPF 工作方式的继承
  • Java 加密替代硬编码密钥

    我是加密新手 我查看了 javax crypto 文档并使用此代码对文件进行了加密 File saveFile new File Settings set saveFile delete FileOutputStream fout new
  • 映射 MMIO 区域写回不起作用

    我希望对 PCIe 设备的所有读写请求都由 CPU 缓存进行缓存 然而 它并没有像我预期的那样工作 这些是我对回写 MMIO 区域的假设 对 PCIe 设备的写入仅在缓存回写时发生 TLP 有效负载的大小是缓存块大小 64B 然而 捕获的
  • p2p0是android中WIFI DIRECT的无线接口吗? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 当我打印 Android 设备中的所有接口时 03 10 19 50 15 484 I System out 22415 lo 03 10
  • PyQt 4 UI 冻结

    下面的程序应该只是累加和 int 并在标签中显示其值 但过了一会儿 GUI 停止工作 而循环继续 from PyQt4 import QtGui QtCore import sys class main window QtGui QWidg
  • JavaScript 中的“可绑定”变量?

    从我对 Flex 的一点经验中 我了解了可绑定变量 例如 文本元素的内容会随着变量的值而变化 我想知道是否可以在 JavaScript 中做这样的事情 例如 假设我有一个 h1 我想包含文档的标题 这可以很容易地完成document get
  • “equal”模板功能是如何实现的? (谓词版本)

    我正在阅读 Accelerated C 一书 其中一个练习要求我们模拟标题中的 equal 函数 到目前为止 我已经实现了简单的版本 它采用三个参数 如下所示 template
  • 禁用适用于平板电脑和 iPad 的 Magento 移动主题

    我制作了一个包含桌面和移动主题的网站 它工作得很好 但在平板电脑和 iPad 中它显示了我不想要的移动主题 所以我使用以下异常 iPhone iPod BlackBerry Pre Palm Googlebot Mobile mobi Sa
  • 不同 django 模型的公共字段集中在一处

    我有一些在多个模型中重复的列 有什么解决方案可以将它们放置在某个地方并使用任何模型吗 您可以通过创建基类并在模型中继承它们来实现这一点 Example class TimestampsModel models Model classmeth
  • Java Swing 在 Eclipse Oxy 4.7.3a 上运行?

    我正在尝试在 macOS high Sierra 上的 eclipseoxygen 4 7 3a 中使用 windowbuilder 它安装得很好 但每次我尝试打开设计部分时 它都会显示此错误 Eclipse 在 0 下运行 但是这个 Ja
  • 在 select2 上设置标签值

    我的页面上有选择字段
  • 从数据库中删除文件和相应条目

    我有一个处理文件管理的网站 用户可以上传文件 添加描述 编辑和删除 这种情况的最佳实践是什么 我将文件存储在文件系统中 我该如何处理文件的删除 在这种情况下 我必须删除实体 数据库中的文件和条目 第一种情况是我删除文件 如果没有错误 我从数
  • 从 Tokio 应用程序使用 Actix:混合 actix_web::main 和 tokio::main?

    目前我主要写的是异步示例Reqwest library https crates io crates reqwest tokio main async fn main gt Result lt Box
  • Caliburn.Micro DisplayRootViewFor 抛出 NullReferenceException

    我的引导程序中有以下代码 private SimpleContainer container protected override void Configure container new SimpleContainer container
  • 从方法返回元组

    我正在编写一个方法 成功时返回一个元组 但是None失败时 我还没有最终确定None 作为失败案例返回 但它是选择之一 我们可以回来吗 1 1对于失败案例 我正在寻找最好的Pythonic方法来实现这一点 以便拆包很容易 请让我知道我们如何