27

我有一个 python 特定的问题。单个下划线_作为参数是什么意思?我有一个函数调用hexdump(_). _ 从未定义过,所以我想它有一些特殊的价值,我在网上找不到告诉我它意味着什么的参考资料。如果你能告诉我,我会很高兴。

4

4 回答 4

13

据我所知,情况似乎是这样的:

_用于指示输入变量是一次性变量/参数,因此可能是必需的或预期的,但不会在其后面的代码中使用。

例如:

# Ignore a value of specific location/index 
for _ in range(10) 
    print("Test")
  
# Ignore a value when unpacking 
a,b,_,_ = my_method(var1) 

(归功于这篇文章

我遇到的具体例子是这样的:

    def f(_):
        x = random() * 2 - 1
        y = random() * 2 - 1
        return 1 if x ** 2 + y ** 2 < 1 else 0
于 2019-01-16T09:19:35.973 回答
11

在 Python shell 中,下划线 ( _) 表示 shell 中最后一个计算表达式的结果:

>>> 2+3
5
>>> _
5

在 IPython 中还有_2,_3等等,但在原始 Python 解释器中没有。据我所知,它在 Python 源代码中没有特殊含义,所以我猜如果它运行没有错误,它是在你的代码中的某个地方定义的。

于 2011-04-26T07:32:49.930 回答
6

下划线被认为是“无关紧要”的变量,此外,如果未使用下划线,像 PyCharm 之类的 IDE 不会对其发出警告

所以在一个函数中

def q(a, b, _, c):
    pass

IDE 将在 a、b 和 c 下划线(未使用的参数),但不是下划线

为什么要使用它而不省略参数?

->当您从某个类继承并想要覆盖您不想使用某些参数的函数时

其他常见用途是表示您在迭代(或其他解包)时不想使用元组的一部分 - 这可以减少混乱

names_and_food = [('michael', 'fruit'), ('eva', 'vegetables')]
for name, _ in names_and_food:
    print(name)

我在任何 python PEP 中都找不到它,但 pylint 甚至在常见问题解答中也有

于 2019-01-16T09:28:01.347 回答
3

它在您编写的代码中没有特殊值。它存储您在交互式解释器中评估的最后一个表达式的结果,并用于方便起见

于 2011-04-26T07:35:15.327 回答