python' print'声明和范围

时间:2017-02-02 03:38:54

标签: python

我不了解以下两种情况:

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]

没有理解" *"的功能。 ,它与范围或印刷声明有关吗?

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。