文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>Python小程序解析之--函数 powersum

Python小程序解析之--函数 powersum

时间:2006-12-30  来源:wangjinfeng

>>> def powersum(power, *args):
...     '''Return the sum of each argument raised to specified power.'''
...     total = 0
...     for i in args:
...          total += pow(i, power)
...     return total
...
>>> powersum(2, 3, 4)
25

>>> powersum(2, 10)
100

解析:

>>> def powersum(power, *args):
...     '''Return the sum of each argument raised to specified power.'''
函数定义时只有一个行参power,其实参将按位置匹配原则传值
args是用来存储多余的参数,即按位置匹配不上的参数

...     total = 0
...     for i in args:
...          total += pow(i, power)
pow是求幂的函数pow(i, power)是求i的power次方

...     return total
...
>>> powersum(2, 3, 4)
25
 实参2按位置匹配给了行参power
3和4按位置匹配不上,因此被作成列表[3, 4]给了args

>>> powersum(2, 10)
100
 实参2按位置匹配给了行参power
10按位置匹配不上,因此被作成列表[10]给了args



于*args用法类似的还有**args,但传给* *args的实参将被作成字典,因此实参传递时会写成foo=bar的形式
例如:
def foo(a, b, c, **args):
        print a, b, c
        for k in args.keys():
               print k, args[k]

foo(1, 2, 3, d=5, e=6, abc='abc')

传实参时foo=bar格式中的foo将被作成字典的key
,并且是字符串类型,而bar则被原样保留

先按位置匹配,多余参数的如果不是foo=bar格式则传给*arg,否则传给**args

例如
def func(a, b, c, *listarg, **dictarg):
       pass

func(1, 2, 3)          # a=1, b=2, c=3, listarg=[], dictarg={}
func(1, 2, 3, 4, 5)  # a=1, b=2, c=3, listarg=[4, 5], dictarg={}
func(1, 2, 3, 4, 5, x=6, y=7, z=8)   # a=1, b=2, c=3, listarg=[4, 5],
dictarg={'x'=6, 'y'=7, 'z'=8}

给函数设计*arg和**args是为了能方便的扩充函数功能,因为这样函数将不受行参个数限制,不论多少个实参都可以成功调用,否则实参必须严格匹配行参才可以调用
排行榜 更多 +
找茬脑洞的世界安卓版

找茬脑洞的世界安卓版

休闲益智 下载
滑板英雄跑酷2手游

滑板英雄跑酷2手游

休闲益智 下载
披萨对对看下载

披萨对对看下载

休闲益智 下载