在pyton中,函式與任何其它物件(字串,數字,列表)一致,既可以動態地建立或銷毀,也可以傳遞給其它函式,或者作為值進行返回。
python中的一切皆物件,我們定義的名稱僅僅是與這些物件繫結的識別符號。函式也不例外,它們也是物件,同樣可以被繫結到不同的名稱。
def
add(x,y)
:return x+y
# 輸出 add 的記憶體位址
>>
>add
>
# 將 add 的記憶體位址當作值賦值給變數 f
>>
>f = add
>>
>f
>
# 等同與 add(3,4)
>>
>f(3,
4)7
在python中,將其它函式作為引數的函式成為高階函式,比如: map,filter
下邊我們定義兩個函式: add()-求和 ,subtract()-求差 ,operate()-作為高階函式
# 求和
defadd
(x,y)
:return x+y
# 求差
defsubtract
(x,y)
:return x-y
# 高階函式 ,將函式作為引數
defoperate
(func,x,y)
:return func(x,y)
# 呼叫函式
>>
>operate(add,5,
3)8>>
>operate(subtract,5,
3)2
這樣就可以將函式物件 add 和 subtract 當作 operate() 的引數進行傳遞了,使用起來非常方便!
來看乙個簡單的求和函式
def
outer()
:# 封閉函式
definner
(n):
# 巢狀函式
sum=
0for i in
range(1
, n)
:sum
+= i
return
sumreturn inner # 返回乙個函式物件
當每次呼叫封閉函式時,都會建立乙個巢狀函式的新例項:
>>
> f = outer(
)>>
> f
<
locals
>
.add at 0x000002650b7dadc0
>
>>
> f1 = outer(
)>>
> f1
<
locals
>
.add at 0x000002650b7dae50
>
顯然,f和f1不同,這是因為inner()是在執行outer()期間被定義的,所以第二次的建立對第一次沒有影響。
當呼叫f(n)時,才會真正地計算求和結果:
>>
> f(4)
6>>
> f1(10)
45
函式的用法 CELL函式高階用法,
資料多時看的眼花繚亂,使用聚光燈功能突出顯示當前的行和列,在檢視資料時非常方便,wps是自帶該功能的。選中要設定的資料區域,在 開始 選項卡下點 條件格式 選擇 新建規則 在彈出的 新建格式規則 視窗中選擇 使用公式確定要設定格式的單元格 在 為符合此公式的值設定格式 下輸入公式 or cell r...
sscanf函式的高階用法
大家都知道sscanf是乙個很好用的函式,利用它可以從字串中取出整數 浮點數和字串等等。它的使用方法簡單,特別對於整數和浮點數來說。但新手可能並不知道處理字串時的一些高階用法,這裡做個簡要說明吧。1.常見用法。char str 512 sscanf 123456 s str printf str s...
sscanf函式的高階用法
sscanf與scanf類似,都是用於輸入的,只是後者以螢幕 stdin 為輸入源,前者以固定字串為輸入源。函式原型 int scanf const char format argument 其中的format可以是乙個或多個 type t n 非 符號 注 表示a,b,c中選一,d 表示可以有d也...