一、函數修飾符
'@' 用做函數的修飾符,可以在模塊或者類的定義層內對函數進行修飾,
出現在函數定義的前一行,不允許和函數定義在同一行
一個修飾符就是一個函數,它將被修飾的函數作為參數,並返回修飾后的同名函數或其他可調用的東西?
示例:

1 def square_sum(fn): 2 def square(*args): 3 print "1---", args 4 n = args[0] 5 # return n*(n-1)*(2*n-1)/6 6 print "2==", n*(n-1)*(2*n-1)/6 7 print fn.__name__ 8 fn(n*(n-1)*(2*n-1)/6) 9 print "*"*15 10 return fn(n*(n-1)*(2*n-1)/6) 11 return square 12 13 14 @square_sum 15 def sum_a(a): 16 print "3=", a 17 18 sum_a(10)
結果
1--- (10,) 2== 285 sum_a 3= 285 *************** 3= 285
可以看出,他是先執行修飾器函數,然后有return fn的時候,修飾器下的函數才是生效的,否則函數sum_a 是沒有結果的。
--------2016-7-19 17:21:15--
source:【1】python中的@ 符號