Oma Dt Asked:2020-08-14 01:47:39 +0000 UTC2020-08-14 01:47:39 +0000 UTC 2020-08-14 01:47:39 +0000 UTC 使用字符“_”作为循环的中间变量 772 我有一个问题,为什么一些 python 开发人员在循环中使用这个符号作为中间变量: for _ in items: print(_) 也许在python中这样写是传统的? python 3 个回答 Voted MaxU - stop genocide of UA 2020-08-14T01:56:20Z2020-08-14T01:56:20Z 如果需要使用变量,则使用下划线 ( ) 作为变量名是一个不成文的约定_,但不会使用。 例子: def f(x): print(x) 如果运行: In [47]: [f(x) for x in list("abc")] a b c Out[47]: [None, None, None] 将返回一个无列表,为避免这种情况,您可以使用: In [48]: _ = [f(x) for x in list("abc")] a b c 此外,Python解释器默认将最后一个表达式的结果存储在一个变量中_: >>> 10**2 100 >>> print(_) 100 >>> 此外,下划线可用于数字的视觉分隔: In [51]: 123_456_789 Out[51]: 123456789 In [52]: 0b_0110 Out[52]: 6 In [53]: 0x_23_be Out[53]: 9150 Best Answer Эникейщик 2020-08-14T01:56:34Z2020-08-14T01:56:34Z 在您的示例中,您不需要使用下划线字符。在循环中,它用于表明该变量不用于计算并且没有值。 for _ in range(5): print("Hohoho!") 该变量还_存储解释器中最后一个表达式的值: >>> 3*2 6 >>> _ 6 >>> hoefling 2020-08-14T04:31:00Z2020-08-14T04:31:00Z 一般来说,python中带下划线的主题很酷。我会投入两分钱:虽然下划线在 python 中不是特殊字符,它可以用来命名变量、函数、类甚至模块,但我不建议这样做。Python 有一个gettext用于本地化程序的包。在安装本地化时,这个包规定了一个下划线别名gettext.gettext,因为这样更容易标记本地化文本: print(_('Hello there!')) 比这样: print(gettext.gettext('Hello there!')) 因此,下划线的问题是它可以重写本地化别名,如果你不走运并且在变量中存储了具有兼容签名的函数,你可以寻找本地化为什么突然中断的问题的答案。在大多数情况下,出乎意料的是,之前工作的代码开始抛出异常 la str is not callable,这可能是某人重新分配了下划线的信号。 所以用不用_,大家自己决定;如果代码未本地化或团队有自己的约定(例如,别名gettexttoloc而不是_),那么下划线没有任何问题。我们的大多数 python 项目都以某种方式与 Django 相关,因此我们使用它的样式并在测试开始之前在提交和 CI 中使用 linter 捕获下划线分配。
如果需要使用变量,则使用下划线 ( ) 作为变量名是一个不成文的约定
_,但不会使用。例子:
如果运行:
将返回一个无列表,为避免这种情况,您可以使用:
此外,Python解释器默认将最后一个表达式的结果存储在一个变量中
_:此外,下划线可用于数字的视觉分隔:
在您的示例中,您不需要使用下划线字符。在循环中,它用于表明该变量不用于计算并且没有值。
该变量还
_存储解释器中最后一个表达式的值:一般来说,python中带下划线的主题很酷。我会投入两分钱:虽然下划线在 python 中不是特殊字符,它可以用来命名变量、函数、类甚至模块,但我不建议这样做。Python 有一个
gettext用于本地化程序的包。在安装本地化时,这个包规定了一个下划线别名gettext.gettext,因为这样更容易标记本地化文本:比这样:
因此,下划线的问题是它可以重写本地化别名,如果你不走运并且在变量中存储了具有兼容签名的函数,你可以寻找本地化为什么突然中断的问题的答案。在大多数情况下,出乎意料的是,之前工作的代码开始抛出异常 la
str is not callable,这可能是某人重新分配了下划线的信号。所以用不用
_,大家自己决定;如果代码未本地化或团队有自己的约定(例如,别名gettexttoloc而不是_),那么下划线没有任何问题。我们的大多数 python 项目都以某种方式与 Django 相关,因此我们使用它的样式并在测试开始之前在提交和 CI 中使用 linter 捕获下划线分配。