繁体   English   中英

为什么Python的线程模块中有两种具有相同功能的方法?

[英]Why two methods with same functionality available in threading module in Python?

对于threading.Thread ,有两个似乎具有相同功能的方法:

  • is_aliveisAlive

对于threading.Event ,有以下方法:

  • is_setisSet

类似的threading模块,同样可以使用这些方法

  • currentThreadcurrent_thread
  • active_countactiveCount

因此,问题是,尽管看起来这两种方法都具有相同的功能,但为什么有两种方法可用?

另外, 哪一个更好

这是风格问题。 在强调使用下划线样式作为Python样式之前,已经有使用不同样式的库了。 因此,对函数进行了重命名,但是由于兼容性问题,还必须保留旧名称版本。

无论如何, PEP 8建议使用下划线样式,因此我建议坚持使用下划线样式。

通常,Python使用lowercaselowercase_with_underscores作为方法和函数名称 threading模块在首次添加到Python时,错误地为许多名称使用了mixedCase 他们后来添加了lowercase_with_underscores名称作为别名,以与其他Python保持样式一致性。

通常,除非您的代码需要在Python 2.5或更早版本上运行(在2.6中添加了固定名称),否则请使用lowercase_with_underscores名称。 也就是说, 文档说明

注意:从Python 2.6开始,此模块提供了符合PEP 8的别名和属性,以替换受Java线程API启发的camelCase名称。 此更新的API与多处理模块的API兼容。 但是,尚未为弃用camelCase名称设置任何时间表,Python 2.x和3.x仍然完全支持它们。

我不确定100%,但我认为它只是来自不同版本的Python的别名,它们具有相同的功能

原因是保持与旧版Python的兼容性

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM