Python断言风格

2024-04-09

我想知道我所做的是否是一种适当的断言方法。我正在尝试为 Python 的风格指南制作一些既简洁又非常正确的东西。

try:
    assert self.port_number == 0
    assert self.handle == None
    assert isinstance(port_number, int) or isinstance(port_number, float)
    assert port_number > 0
except AssertionError:
    return -1

*body of code*

return 0

上面是我的代码的摘录,显示了我如何处理参数断言。您可以假设我已经介绍了所有必要的断言,并且输入是 port_number。这被认为是好的风格吗?有没有更好的办法?


The assert语句只能用于检查程序的内部逻辑,而不能用于检查用户输入或环境。引用最后两段http://wiki.python.org/moin/UsingAssertionsEffectively http://wiki.python.org/moin/UsingAssertionsEffectively ...

断言应该not用于测试可以的失败案例 由于错误的用户输入或操作系统/环境而发生 失败,例如找不到文件。相反,你应该提出一个 异常,或打印错误消息,或任何适当的内容。一 断言只能用于自测试的重要原因 该程序的特点是可以在编译时禁用断言。

如果 Python 使用 -O 选项启动,则断言将是 被剥离且未评估。因此,如果代码大量使用断言, 但对性能至关重要,那么就有一个系统可以将它们转向 在发布版本中关闭。 (但是不要这样做,除非它真的 必要的。科学证明,有些错误只会出现 当客户使用机器并且我们希望断言能够提供帮助时 也。 )

考虑到这一点,实际上永远没有理由在用户代码中捕获断言,因为断言失败的全部目的是尽快通知程序员程序中存在逻辑错误。

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

Python断言风格 的相关文章

随机推荐

  • AngularJS ngMessages 无法绑定到 $index 表达式

    我正在构建一个 Angular 表单 它需要在一个内部可重复的表单元素ngRepeat
  • Blender 与 Unity [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • windows 8 App从App.xaml.cs访问页面方法

    可能是一个愚蠢的问题 所以我提前道歉 我是构建 Windows 8 应用商店应用程序的新手 当应用程序暂停时 我需要在页面脚本上运行一些方法 我只有一个页面 并且 Page1 xaml cs 文件中有一些公共方法 我想从 App xaml
  • 开发网站时如何处理不同的屏幕分辨率/屏幕尺寸?

    我想使用 jQuery 开发一个适用于所有主流浏览器的网站 我想从基本布局开始 一个页眉 几个包含内容的选项卡和页脚 我想知道应该如何创建这个布局来支持不同的屏幕分辨率 屏幕尺寸或窗口尺寸 在定义组件的宽度和高度时 我应该使用像素 点 百分
  • 如何按组仅保留特定列中具有最低和最高值的行?

    简而言之 我该怎么办 structure list id c 1 2 3 4 5 6 user c 1 1 1 2 2 2 value c 1 3 5 2 5 9 Names c id user value row names c NA 6
  • 如何让 Rosenbrock23 在 ParameterizedFunctions.jl DSL 中使用 ODE?

    进一步这个问题 https stackoverflow com questions 54422068 how to fix typeerror in setindex in differentialequations jl 54423008
  • 从 CodeAttribute 内的参数获取 CodeClass?

    我正在研究一些 T4 代码生成 为此我需要在 BarAttribute 构造函数内传递的类型的 CodeClass class Baz class Bar Attribute public Bar Type type Bar typeof
  • Python pandas 检查数据框是否不为空

    我有一个if语句 它检查数据框是否不为空 我的做法如下 if dataframe empty pass else do something 但我确实需要 if dataframe is not empty do something 我的问题
  • 创建“集合字典”

    我需要将数据有效地存储在类似于 集合字典 的东西中 例如有一个字典 其中包含与每个唯一键匹配的多个 唯一 值 我的数据源是一个 不是很好 结构化的 XML 我的想法是 我将浏览许多元素并找到关键 如果key不存在 则将其添加到字典中 如果已
  • 如何在宏 gcc 中添加警告禁用编译指示

    我需要禁用以下代码中宏 LOG W 内部产生的警告 为此 我将此宏包装在另一个宏 LOG W 中 并禁用了其中的警告 Wold style cast 然后在代码中我使用 LOG W 代替 但是我仍然收到警告并且无法找出原因 任何指示表示赞赏
  • Netty 和字节顺序

    由于文档不完善并且缺乏 Netty 经验 我遇到了一些问题 我不知道如何设置默认的 ByteOrder 我需要一个小尾数法默认设置 如果有人能给我一些关于这方面的提示 我会很高兴 你可以使用Bootstrap setOption 去做这个
  • 为什么使用 Schema.org 微数据来标记网页元素?

    我明白为什么以及如何使用Schema org http schema org 将微数据添加到您的网站 这不是一个问题 问题是为什么 Schema org 支持某些可以用简单 HTML5 标记的内容 其中包括 Types WebPage ht
  • 使用 JavaScript 变量作为函数名?

    我在 Javascript 中有以下代码 jQuery document ready function var actions new Object var actions actions 0 create actions 1 update
  • 如何打开嵌入的资源word文档?

    我的项目中有一个嵌入的 Word 模板文档 我将其添加为资源 Resources resx gt 添加资源 gt 添加现有文件 现在我想打开它 如下所示 Microsoft Office Interop Word Application a
  • 如何使用 JavaScript 源地图(.map 文件)?

    最近我看到文件带有 js map一些 JavaScript 库附带的扩展 例如Angular http code angularjs org 这在我脑海中提出了几个问题 它是做什么用的 为什么 Angular 的人要关心交付一个 js ma
  • 尝试执行 axis2 服务客户端时出现异常

    我正在尝试创建一个示例 axis2 ServiceClient 它抛出以下错误 org apache axiom om OMException No meta factory found for feature default this u
  • 使用故事板时从 UITabbarController 添加/删除或显示/隐藏选项卡栏项目

    我有一个应用程序需要显示不同的内容UITabBarController基于用户是否注册 有没有办法添加和删除ViewControllers 来自 aUITabBarController在运行时 显示和隐藏也很好 在故事板之前你可以打电话se
  • sudo bang bang 到底是什么? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 sudo bang bang 的目的是什么 sudo 什么时候可能需要使用它 砰砰砰 命令是一个快捷方式重复您在终端中输入的上一个命令 当您忘记需要管
  • 无法直接从浏览器访问 Angular 组件

    我有一个使用 Angular 1 5 组件的小型 Web 应用程序 当我启动服务器时 浏览器将我重定向到http 127 0 0 1 50001 欢迎 http 127 0 0 1 50001 welcome 这是预期的 并且欢迎页面出现
  • Python断言风格

    我想知道我所做的是否是一种适当的断言方法 我正在尝试为 Python 的风格指南制作一些既简洁又非常正确的东西 try assert self port number 0 assert self handle None assert isi