Python _意思是在for循环后分配的

Python _ meaning when assigned after for loop

本问题已经有最佳答案,请猛点这里访问。

我不是一个有经验的Python程序员,我看到了以下我无法理解的代码。不幸的是,语法非常复杂,很难在互联网上搜索到。虽然我确实找到了一些关于"和"的解释,但我不确定下面的代码是否对"有特殊意义"。

1
2
3
if not allowed_positions:
    return (0, 0)
_, point = max([(self.point(graph.find_point(p), self), p) for p in allowed_positions])

在上面的代码中,我不明白为什么在点= ...之前有一个带逗号'-,'的下划线。


_仅用作丢弃变量的占位符。假设有一个函数返回一个有两个元素的元组,我只对该元组的第二部分感兴趣,那么对我不需要的变量使用_是一种常规做法。例如

1
2
3
4
5
6
>>> def return_tuple():
...     return (24,7)
...
>>> _, days = return_tuple()
>>> days
7


_是不需要存储数据的变量的占位符。

您可以将它用于元组解包,并且通常实践中使用下划线来表示该值在脚本的后面不会被使用。

如果你有这样的东西:soldiers = [('Steve', 'Miller'), ('Stacy', 'Markov'), ('Sonya', 'Matthews'), ('Sally', 'Mako')]

而且,你只想得到姓氏,你可以这样做:

1
2
3
for _, last_name in soldiers:
    # print the second element
    print(last_name)

而不是:

1
2
for first_name, last_name in soldiers:
    print(last_name

因为你不需要使用first_name。用_替换它,这样就不会存储不必要的变量。