Python高階學習 函式

2021-10-08 18:49:14 字數 3184 閱讀 6822

函式的定義

函式的呼叫

函式文件

函式引數

函式的返回值

變數作用域

匿名函式的定義

匿名函式的應用

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 內建的名字在啟動直譯器的時候被載入到記憶體裡 全域性命名空間 我們寫的 但不是...