返回值帶參數(shù)或者不帶參數(shù)分別是什么意思?
#-*-coding:utf-8-*-
def my_sum(*args):
? ?return sum(args)
def my_average(*args):
? ?return sum(args)/len(args)
def dec(func):
? ?def in_dec(*args):
? ? ? ?if len(args)==0:
? ? ? ? ? ?return 0
? ? ? ?for val in args:
? ? ? ? ? ?if not isinstance(val,int):
? ? ? ? ? ? ? ?return 0
? ? ? ?return func(*args)
? ?return in_dec
my_new_sum = dec(my_sum)
print my_new_sum(1,2,3,4,5)
在in_dec 函數(shù)中,返回值是帶*args 的,而dec 函數(shù)的返回值是不帶參數(shù)的,在my_new_sum = dec(my_sum) 中,my_sum 后面也是不能帶括號(hào)的。自己寫(xiě)的時(shí)候,完全不明白什么時(shí)候該帶參數(shù),什么時(shí)候不該帶,這分別代表了什么?求大神解答。。。
2017-09-07
調(diào)用dec函數(shù)時(shí)返回的是內(nèi)部函數(shù)in_dec的函數(shù)地址(不帶參數(shù)返回的就是函數(shù)地址),直接返回函數(shù)地址是為了這個(gè)函數(shù)的可重用性,以便下一個(gè)具有同樣性質(zhì)的函數(shù)(例如my_average)也可以進(jìn)行相同的判斷
(先執(zhí)行in_dec里面的判斷,再調(diào)用my_sum()函數(shù)或者my_average( )函數(shù)進(jìn)行計(jì)算)
帶了參數(shù)值就代表正式調(diào)用這個(gè)函數(shù)。它執(zhí)行邏輯是 調(diào)用dec函數(shù)-->返回in_dec地址-->自身就是in_dec了-->執(zhí)行in_dec里的判斷并返回sum()函數(shù)對(duì)*arg的處理結(jié)果。