- 1.
def print_test(*n):
print n
print_test('Testing')
print_test(1,2,3)
def print_test2(title,*n):
print title
print n
print_test2('Running:',1,2,3)
print_test2('Running:')
Python中收集参数,*号开头表示收集其余参数,并以元组方式存储。
(‘Testing’,)
(1, 2, 3)
Running:
(1, 2, 3)
Running:
()
- 2.
def print_test3(**n):
print n
print_test3(x=1,y=2,z=3)
print '-'*25
def print_test4(x,y,z=3,*pospar,**keypar):
print x,y,z
print pospar
print keypar
print_test4(1,2,3,4,5,6,7,q=3,w=5)
这里**开头表示收集关键字参数,并以字典方式存储。
输出:
{'y': 2, 'x': 1, 'z': 3}
-------------------------
1 2 3
(4, 5, 6, 7)
{'q': 3, 'w': 5}
3.
上一节中,如何实现多个名字同时储存,在本节可以解决。
def store(data,*full_names):
for full_name in full_names:
names=full_name.split()
改成上述一样即可。
- 4.
#参数收集的逆过程
def add(x,y):
return x+y
n=(1,3)
print add(*n)
print '-'*15
def hello_world(greeting='Hello',name='Mary'):
print '%s, %s!'%(greeting,name)
params={'name':'Bob','greeting':'Hi'}
hello_world(**params)
输出:
4
---------------
Hi, Bob!
- 5.
def story(**kwds):
return 'Once upon a time, there was a'\
'%(job)s called %(name)s.' %kwds
def power(x,y,*others):
if others:
print 'Receive redundant parameters:',others
return pow(x,y)
def interval(start,stop=None,step=1):
if stop is None:
start,stop=0,start
result=[]
i=start
while i<stop:
result.append(i)
i+=step
return result
参数使用范例。
>>> print story(job='king',name='Bob')
Once upon a time, there was aking called Bob.
>>> params={'name':'Python','job':'language'}
>>> print story(**params)
Once upon a time, there was alanguage called Python.
>>> del params['job']
>>> print story(job='stoke of genius',**params)
Once upon a time, there was astoke of genius called Python.
>>> power(2,3)
8
>>> power(y=3,x=2)
8
>>> params=(4,)*2
>>> power(*params)
256
>>> power(3,3,'Hello world')
Receive redundant parameters: ('Hello world',)
27
>>> interval(10)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> interval(1,5)
[1, 2, 3, 4]
>>> interval(3,12,4)
[3, 7, 11]
>>> power(*interval(3,7))
Receive redundant parameters: (5, 6)
81