Using * operator in function call
本问题已经有最佳答案,请猛点这里访问。
我对在random.randint()中使用*感到困惑,找不到任何文档
1 | random.randint( *(1,300) ) |
VS
1 2 3 4 | random.randint( 1,300 ) random.randint( *300 ) TypeError: randint() argument after * must be a sequence, not int |
在此上下文中,
1 | random.randint( (1,300) ) |
将一个元组错误地作为单个参数传递给
1 | random.randint( *(1,300) ) |
将"修饰"元组的每个元素作为参数传递给函数。对于硬编码的元组来说,它并不真正有用,因为删除
1 2 | range = (1,300) random_value = random.randint( *range ) |
1 | random.randint(*(1,300)) |
和
1 | random.randint(1,300) |
下面是一个语法错误,因为
1 | random.randint(*300) |
1 | func(x[0], x[1], x[2]) |
或者,简单地说:
1 | func(*x) |
在任何python函数中使用*意味着*后面的序列是要传递给函数的参数列表。所以,
1 | random.randint(*(1, 300)) |
和那个一样吗
1 | random.randint(1, 300) |
代码
1 | random.randint(*300) |
失败,因为300不是一个序列,而是一个整数。