在函数调用中使用*运算符

use*_*645 1 python

我在random.randint()中使用*感到困惑,找不到任何文档

random.randint( *(1,300) )
Run Code Online (Sandbox Code Playgroud)

random.randint( 1,300 )

random.randint( *300 )
TypeError: randint() argument after * must be a sequence, not int
Run Code Online (Sandbox Code Playgroud)

che*_*ner 5

*在这种情况下扩展元组成单独的元件。鉴于

random.randint( (1,300) )
Run Code Online (Sandbox Code Playgroud)

会错误地将元组作为单个参数传递给random.randint

random.randint( *(1,300) )
Run Code Online (Sandbox Code Playgroud)

将“装饰”元组的每个元素作为参数传递给函数。对于硬编码的元组,它并不是真正有用的,因为删除*和括号会更快更清楚。但是,当您有一个引用元组的名称时,这更有意义。

range = (1,300)
random_value = random.randint( *range )
Run Code Online (Sandbox Code Playgroud)