我不了解以下两种情况:
from __future__ import print_function
if __name__ == '__main__':
n = int(raw_input())
print(*range(1,n+1), sep='')
如果n是3
output:123
在第二种情况下发表声明,
print(range(1,n+1), sep='')
output:[1, 2, 3]
没有理解" *"的功能。 ,它与范围或印刷声明有关吗?
答案 0 :(得分:0)
Range返回一个元组,它在函数调用中被*展开。它等同于打印(1,2,3,sep ='')。 *用于解压缩未命名的args。因为它们总是被传递,所以只要任何arg没有得到2个值,它们仍然是允许的。
答案 1 :(得分:0)
这是Python中的Argument Unpacking功能。
这是一个简单的例子:
def f(a,b,c):
print(a,b,c)
f(1,2,3)
f(*[1,2,3])
因此print(*(1,2,3))
相当于print(1,2,3)
答案 2 :(得分:0)
请参阅python' s Expressions reference
列表的值正由*运算符解压缩。以下是文档中的引用:
如果语法*表达式出现在函数调用表达式中 必须评估为可迭代。处理此可迭代的元素 好像他们是额外的位置论点;如果有 位置参数x1,...,xN和表达式求值为a 序列y1,...,yM,这相当于具有M + N位置的调用 参数x1,...,xN,y1,...,yM。