Python 在';sched.scheduler.输入';

Python 在';sched.scheduler.输入';,python,tuples,Python,Tuples,在这个代码位中,我使用sched lib创建函数循环。在这里,我注意到当我们分配参数时,后面有一个逗号。我想知道这是为什么 当我删除尾随逗号时,它将返回错误,并显示: *后面的do_something()参数必须是iterable,而不是scheduler 在其他尾随逗号的问题中,人们说尾随逗号会把int变成元组。在这里,无论是否添加尾随逗号,s的值类型仍然是scheduler对象。元组只需要,逗号,它们不需要()括号,除非它们需要!例如: import sched, time s = sche

在这个代码位中,我使用sched lib创建函数循环。在这里,我注意到当我们分配参数时,后面有一个逗号。我想知道这是为什么

当我删除尾随逗号时,它将返回错误,并显示:

*后面的do_something()参数必须是iterable,而不是scheduler


在其他尾随逗号的问题中,人们说尾随逗号会把int变成元组。在这里,无论是否添加尾随逗号,
s
的值类型仍然是scheduler对象。

元组只需要
逗号,它们不需要
()
括号,除非它们需要!例如:

import sched, time
s = sched.scheduler(time.time, time.sleep)
def do_something(sc): 
    print("Doing stuff...")
    s.enter(5, 1, do_something, argument=(sc,))

s.enter(5, 1, do_something, argument=(s,))
s.run()
以及:

在这两种情况下,
x
y
是相同的。但就你而言:

x = 1,
y = (1,)
正如你所发现的,它们是不一样的。为什么?


在第二种情况下,
参数=sc,
解释为参数列表的
的一部分,因此它不被视为指示
元组()。在本例中,您需要
(sc,)
来构建
元组()

(s)
s
相同,而
(s,)
是一个元组,包含变量
s
引用的一个项。它与
int
没有什么特别的关系。这是对元组构造中一个非常常见的角型的很好的解释。
x = 1,
y = (1,)
s.enter(5, 1, do_something, argument=(sc,))
s.enter(5, 1, do_something, argument=sc,)