函式的定義
函式的呼叫
函式文件
函式引數
函式的返回值
變數作用域
匿名函式的定義
匿名函式的應用
def
add(a, b)
:print
(a + b)
add(1,
2)# 3add([1
,2,3
],[4
,5,6
])# [1, 2, 3, 4, 5, 6]
def
myfirstfunction
(name)
:"函式定義過程中name是形參"
# 因為ta只是乙個形式,表示佔據乙個引數位置
print
('傳遞進來的叫做實參,因為ta是具體的引數值!'
.format
(name)
)myfirstfunction(
'程式'
)# 傳遞程式叫做實參,因為ta是具體的引數值!
print
(myfirstfunction.__doc__)
# 函式定義過程中name是形參
help
(myfirstfunction)
# help on function myfirstfunction in module __main__:
# myfirstfunction(name)
# 函式定義過程中name是形參
python 的函式具有非常靈活多樣的引數形態,既可以實現簡單的呼叫,又可以傳入非常複雜的引數。從簡到繁的引數形態如下:
位置引數 (positional argument)
預設引數 (default argument)
可變引數 (variable argument)
關鍵字引數 (keyword argument)
命名關鍵字引數 (name keyword argument)
引數組合
可變引數和關鍵字引數的同異總結如下:
可變引數允許傳入零個到任意個引數,它們在函式呼叫時自動組裝為乙個元組 (tuple)。
關鍵字引數允許傳入零個到任意個引數,它們在函式內部自動組裝為乙個字典 (dict)。
def
add(a, b)
:return a + b
print
(add(1,
2))# 3
print
(add([1
,2,3
],[4
,5,6
]))# [1, 2, 3, 4, 5, 6]
變數作用域
python 中,程式的變數並不是在哪個位置都可以訪問的,訪問許可權決定於這個變數是在**賦值的。
定義在函式內部的變數擁有區域性作用域,該變數稱為區域性變數。
定義在函式外部的變數擁有全域性作用域,該變數稱為全域性變數。
區域性變數只能在其被宣告的函式內部訪問,而全域性變數可以在整個程式範圍內訪問。
python 裡有兩類函式:
def
sqr(x)
:return x **
2print
(sqr)
# y =
[sqr(x)
for x in
range(10
)]print
(y)# [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
lbd_sqr =
lambda x: x **
2print
(lbd_sqr)
# at 0x000000babb6ac1e0>
y =[lbd_sqr(x)
for x in
range(10
)]print
(y)# [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
sumary =
lambda arg1, arg2: arg1 + arg2
print
(sumary(10,
20))# 30
func =
lambda
*args:
sum(args)
print
(func(1,
2,3,
4,5)
)# 15
argument_list - 函式引數,它們可以是位置引數、預設引數、關鍵字引數,和正規函式裡的引數型別一
樣。: - 冒號,在函式引數和表示式中間要加個冒號。
expression - 只是乙個表示式,輸入函式引數,輸出一些值。
expression 中沒有 return 語句,因為 lambda 不需要它來返回,表示式本身結果就是返回值。
匿名函式擁有自己的命名空間,且不能訪問自己引數列表之外或全域性命名空間裡的引數。
非函式式程式設計
def
f(x)
:for i in
range(0
,len
(x))
:x[i]
+=10
return x
x =[1,
2,3]
f(x)
print
(x)# [11, 12, 13]
函式式程式設計
def
f(x)
:y =
for item in x:10)
return y
x =[1,
2,3]
f(x)
print
(x)# [1, 2, 3]
定義高階函式
def
(fun, some_list)
:return fun(some_list)
lst =[1
,2,3
,4,5
]print
sum, lst)
)# 15
print
len, lst)
)# 5
print
lambda x:
sum(x)
/len
(x), lst)
)# 3.0
後補筆記** python高階學習之高階函式
高階函式就是把函式當做引數傳遞的一種函式,例如 執行結果 map 接收乙個函式 f和乙個list,並通過把函式 f 依次作用在 list 的每個元素上,得到乙個新的 list 並返回。執行結果 reduce 函式接收的引數和 map 類似,乙個函式 f,乙個list,但行為和 map 不同,redu...
python 函式高階 python 函式高階
形參角度 萬能引數 動態接收位置引數 args 動態接收關鍵字引數 kwargs 的魔性用法 函式定義時 代表聚合。他將所有的位置引數 聚合成乙個元組,賦值給了args 函式定義時 將所有的關鍵字引數聚合成乙個字典中,將這個字典賦給了 kwargs 和 在函式的呼叫時 代表打散 僅限關鍵字引數 de...
python基礎學習 函式高階學習
author feng lin date 2018 8 28 函式高階 1.命名空間和作用域 內建命名空間 python直譯器 就是python直譯器一啟動就可以使用的名字儲存在內建命名空間中,例如print input 內建的名字在啟動直譯器的時候被載入到記憶體裡 全域性命名空間 我們寫的 但不是...