Python_10

  1. 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:
()

  1. 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()

改成上述一样即可。

  1. 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!
  1. 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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值