- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
如何在 Eclipse/PyDev 中抑制“未使用的变量”警告
当我使用返回元组的函数时,我通常只需要其中一个值,但仍想分配给多个变量。我希望能够暂时关闭此警告,以便在更严重的问题上归零。然后,我可以在进行更多最终检查时将其重新打开。
如果您想知道我为什么要故意这样做,那只是为了便于阅读。假设一个函数返回一个元组的元组,我的代码的几个部分可能会像这样使用第三个值:
label, content = myfunc()[2]
有时,我可能只对“内容”部分感兴趣,但我发现...
tmp, content = myfunc()[2]
...比这更并行(因此更具可读性):
content = myfunc()[2][1]
如果有更好的方法来做到这一点,而无需分配给一次性未使用的变量,请随时提供作为答案。
>>> myfunc()[2]
('lab', 'val')
>>> , v = myfunc()[2]
SyntaxError: invalid syntax
>>> tmp, v = myfunc()[2]
>>>
最佳答案
如果您不需要变量的值,请将其分配给特殊变量_
。
就Python而言,_
其实并没有什么特别之处;它只是另一个合法的标识符名称。
但是,对于大多数“lint”风格的工具(希望包括 PyDev)——更重要的是,人类读者——它具有特殊含义:“我不需要这个变量,我只是在这里放一些东西,因为API/语法/任何需要它的东西”。这意味着他们不会警告您不使用它。
所以:
_, content = myfunc()[2]
是的,你说得对,这通常比 myfunc()[2][1]
更具可读性。不仅如此,它还可以帮助您捕获更多错误——如果 myfunc()[2]
没有恰好两个成员,则元组赋值将抛出,但 [1]
不会。
非常非常少,这不是一个好主意,因为该值是您希望尽快被垃圾收集的东西,并将其绑定(bind)到 _
而不是仅仅在所有(例如,通过 [2][1]
)都会延迟。
更严重的是,这确实与也特别使用 _
的不同习语相冲突:使用 gettext
进行国际化的代码通常会:
import gettext
_ = gettext.gettext
或者,等效地:
from gettext import gettext as _
显然,您不能将 _
用作 gettext 快捷方式和无意义的标识符。 (实际上你可以侥幸逃脱,因为 gettext
的含义是在模块全局级别绑定(bind)的,无意义的标识符只能在函数体内部使用……但仍然,尝试这是一个非常糟糕的主意,因为在某些时候,在您分配了一个隐藏它的本地值之后,您最终会在函数中使用 gettext
_
。)在这两种情况下都没有强制您使用 _
——但是如果您使用其他任何东西,您可能会混淆读者(并且可能是您最初希望安抚的同一个 linting 工具)。因此,您必须决定在任何给定项目中哪个对您更重要。 (通常,如果您使用 gettext
,那将是更重要的一个。)
如果您重复调用 myfunc
并处理一些值,您可能需要考虑编写一个包装函数:
def mywrapperfunc():
_, content = myfunc()[2]
return content
那么你的代码就可以了:
content = mywrapperfunc()
这有很多优点:
myfunc
返回的序列的索引 2 中。mywrapperfunc
更好)和/或注释/文档字符串的地方,以防万一。myfunc
以便您想要的值现在在索引 3 而不是 2 中,并且是 3 元素元组的第二个成员而不是 2 元素元组,您只需要更改 mywrapperfunc
而不是 20 行不同的代码。_
成语(例如,用 gettext
来 i18n 你的代码),你只需要在一个地点。附注:在交互式解释器中,_
确实有一个特殊的含义:它绑定(bind)到最后一个交互式命令的结果。但这并不意味着您不能在交互式解释器中使用 _
。 (事实上,那里更好,因为你存储在那里的任何东西都会立即被覆盖,所以不会出现非常罕见的 GC 问题。)
关于python - 如何在 Eclipse/PyDev 中抑制 "unused variable"警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13944234/
我收到警告 Circular dependency detected! 在 Angular 6 中,我知道为什么会出现这个问题,但这根本不是问题。 我目前正在使用 SVG,按照我的逻辑,我会防止可能出
我试图抑制 clang/gcc 中地址清理程序发出的警告 我的源文件如下所示: int foo(){ double bar[] = {7,8}; return bar[3]; } int ma
我在微服务架构中有一个应用程序。该应用程序从不同的源获取数据,并且从其他各种应用程序获得许多不同的错误响应。某些异常(例如404-Not Found异常)可以引发并返回给最终用户,但其他异常(错误请求
我喜欢使用 readxl包裹。但是,我一直将它用作 RMarkdown 文档和一些 read_excel() 文档的一部分。读入文件时的消息在进行分析时很有用,但在尝试呈现分析时则不然。所以问题是,在
当我编译 JAXB 模式时,生成的类用通用 Javadoc 注释进行修饰。 是否有可能以某种方式抑制生成这些评论? 最佳答案 Annotation to disable JavaDocs Not if
我正在尝试运行专为 Vuze 设计的插件使用Java。为此,我使用这样的命令: /home/x/jre1.6.0_14/bin/java -Dazureus.config.path=/home/x/p
所以 - 我正在使用库 pyminizip - 这是我发现创建受密码保护的 zip 文件的唯一方法。当我使用它时,我收到一个弃用警告:“#”格式需要 PY_SSIZE_T_CLEAN。 现在,我无法控
这个问题在这里已经有了答案: Is ticklabel_format broken? (1 个回答) 关闭 2 年前。 我是 geopandas 的新手,我正在尝试用常规记数法而非科学记数法绘制带有
我从 Valgrind 得到以下日志: MPK ==5263== 4 bytes in 1 blocks are still reachable in loss record 1 of 84 ==52
有什么方法可以抑制 mediawiki 中的贬低警告吗?例如我在个人 wiki 站点的某些页面顶部收到此消息。 Deprecated: Use of MWNamespace::getSubject w
我正在使用 ScheduledThreadPoolExecutor 执行定期任务。 执行必须是周期性的,而不是固定的延迟。 我遇到了以下问题:考虑一个任务的时间为 1 分钟。如果任务需要 5 分钟才能
我是使用 RScaLAPACK 的 R 新手,每次我生成一个新的进程网格时,我都会收到一条消息。 > sla.gridInit(2) [1] "RScaLAPACK:Process Grid Init
我目前正在使用包 readr 读取文件.这个想法是使用 read_delim逐行读取以查找非结构化数据文件中的最大列数。代码输出有 parsing问题。我知道这些并将在导入后处理列类型。有没有办法关闭
所以我试图防止 fatal error 阻止我的脚本运行 所以我将错误报告设置为0: error_reporting(0); 然后我添加了一些垃圾代码.. junk code~~~~trolololo
在使用 summary() 函数(例如,stata 中的 absorb() 函数的等价物)时,是否有一种方法可以抑制线性模型中固定效应的系数。例如,我希望汇总函数只输出截距和 x,而不是因子的系数和标
如何抑制 SBT 的调试消息?它们被记录到标准输出,所以运行一个项目会产生这个: $ cat src/main/scala/Hello.scala object Hello { def main(
有没有办法抑制 Doxygen 对特定文件发出“未记录”警告?我的项目有几个自动生成的代码头,导致它抛出成百上千的错误,难以筛选。 最佳答案 如 documentation 中所述,有一个配置选项。
R的eHOF包中的HOF函数会自动生成进度条。函数中没有关闭进度条的参数。 有什么办法可以抑制函数外的进度条的生成? (我正在应用该功能数百次,目前进度条除了淹没我的屏幕外没有任何作用。) 最佳答案
随着所有 SDK 的出现,能够方便地针对多个 SDK 和平台进行构建。然而,从 3.2 跳到 3.0,甚至偶尔跳到 2.x,我经常收到涉及已更改或被取代的方法的弃用警告: warning: 'UIKe
我创建了一个 PowerShell 脚本,该脚本将为 Cisco Meraki 添加 VPN 连接。 脚本本身按预期运行,但如果发生错误,则会出现“已完成”弹出窗口,并在 PS 窗口中显示错误消息。
我是一名优秀的程序员,十分优秀!