对于threading.Thread
,有两种方法似乎具有相同的功能:
is_alive
和isAlive
对于threading.Event
,有以下方法:
is_set
和isSet
同样threading
模块,这些方法也可用
currentThread
和current_thread
active_count
和activeCount
所以,问题是,虽然看起来两种方法都具有相同的功能,为什么有两种方法可用?
另外,哪一个更好?
答案 0 :(得分:2)
这是一种风格问题。在下划线风格被正式接受为Python的风格之前,已经有使用不同风格的库。因此,功能被重命名,但由于兼容性问题,必须保留旧名称版本。
无论如何PEP 8建议使用下划线样式,所以我建议坚持下去。
答案 1 :(得分:2)
Python通常使用lowercase
or lowercase_with_underscores
for method and function names。首次添加到Python时,threading
模块错误地将mixedCase
用于许多名称。他们后来将lowercase_with_underscores
名称添加为样式与Python其余部分一致的别名。
通常,使用lowercase_with_underscores
名称,除非您的代码需要在Python 2.5或更早版本上运行(固定名称在2.6中添加)。那就是the docs note:
注意:从Python 2.6开始,此模块提供符合PEP 8的别名和属性,以替换受Java线程API启发的camelCase名称。此更新的API与多处理模块的API兼容。但是,没有为camelCase名称的弃用设置时间表,并且它们在Python 2.x和3.x中仍然完全受支持。
答案 2 :(得分:1)
我不是100%肯定,但它只是来自不同版本的Python的别名,我认为它们具有相同的功能
原因是要保持与旧版Python的兼容性