Python小程式解析之 函式 powersum

2021-04-13 00:14:22 字數 1741 閱讀 7970

>>> 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 生命週期函式 ...