>>> 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=
給函式設計*arg和**args是為了能方便的擴充函式功能
,因為這樣函式將不受行參個數限制,不論多少個實參都可以成功調
用,否則實參必須嚴格匹配行參才可以呼叫
python的zip 函式小技巧解析
zip 函式用於將可迭代的物件作為引數,將物件中對應的元素打包成乙個個元組。利用zip函式可以輕鬆實現各種方便的轉換。由於zip 直接得到的是乙個物件,所以這裡用dict轉換 這裡要說的是 zip 函式得到的結果是乙個物件,不能直接列印,須得進行轉換,這裡使用dict 函式講物件轉換為字典,弱者裡不...
富文字解析之微信小程式
微信小程式在rich text元件後開始支援富文字解析,但需要對照一套自定義規則的 josn 資料格式,api 返回的富文字需要前端做資料轉換。這個主要是用於某些需要 api 直接輸出富文字的地方。比如後端輸出title欄位,但 title 欄位中有加重提示的幾個文字是需要標紅的。這種情況下後端如果...
小程式json格式解析
that.setdata 1 解析這個json wxml 資料 品種 最新價 開盤價 最 最低價 漲跌幅 昨收價 總成交量 js page success function res 效果 this.setdata 2 解析這個json wxml 列表測試 單價 元 m js page 生命週期函式 ...