python - 在 Thread 构造函数中定义 `args` 的更好方法?
问题描述
创建线程时,您将参数作为可迭代对象传递,通常是这样的元组:
import threading
import time
def countdown(secs):
for second in range(secs, 0, -1):
print(f"{second}!", end = " ")
time.sleep(1)
print("Happy New Year!")
countdown_thread = threading.Thread(target=countdown, args=(5,))
countdown_thread.start()
countdown_thread.join()
我认为这(5,)
在语法上很粗糙,并且更难解释发生了什么。这条线同样有效:
countdown_thread = threading.Thread(target=countdown, args=[5])
有没有充分的理由不简单地将列表而不是元组传递给Thread
?我不想让人们误入歧途。
如果没有充分的理由不使用列表,我会在教别人时按照我的意见行事。
解决方案
文档说:
“args 是目标调用的参数元组。默认为 ()。” 参考
它接受列表的事实是一个错误,可能会或可能不会在未来的实现中修复。或者他们可能会更改文档。如果您想保证您的代码在未来可以正常工作,您最好坚持使用文档保证可以工作的内容。
推荐阅读
- reactjs - Guzzle:无法捕获异常详细信息
- python - 根据最近的多边形 acrpy 填充点字段
- sql - 2017 年售票量最低和最高的月份是哪一个月?
- java - Android Studio Learning - 简单的 2D 游戏应用;如何让 SurfaceView 正常工作?
- javascript - 仅禁用或启用当前按钮
- java - 如何检查字符串是否匹配特定格式?
- reactjs - 在 Fluent UI DetailsList 中获取文本颜色代码的更改
- python - Coinlist 交易所 API 认证 - Python
- c - 我的程序在 for 循环后崩溃了?有什么解决方案吗?
- c - GDB 在不需要的位置中断