python基礎 函式 下

2021-09-29 01:29:47 字數 3986 閱讀 8797

命名空間實際上就是以個字典,是用來儲存變數的字典

locals()函式是用來獲取當前作用域的命名空間

如果在全域性作用域中呼叫locals()函式則獲取的是全域性命名空間

如果在函式作用域中呼叫,則獲取的是函式的命名空間

a=

10s=

locals()

#獲取的是全域性命名空間

deffn(

):b=2

s1=locals()

#獲取的是函式命名空間

a=

123s=

locals()

s['b']=

20#向字典中新增key-value,相當於在全域性中建立乙個變數

print

(b)

以上**中新增變數的方式一般不使用這種方法

遞迴簡單來說就是自己呼叫自己

遞迴函式就是在函式中自己呼叫自己

遞迴函式的兩個條件:

1、基線條件:問題可以被分解為最小的問題,當滿足基線條件的時候,遞迴就不在執行

2、遞迴條件:將問題可以分解的條件

例:建立乙個函式用來檢查任意字串是否是回文字串,如果是返回true否則返回false

:回文字串即從後往前讀和從前往後讀是一樣的。例:abcba

def

fn(n):if

0<

len(n)

<2:

return

true

elif n[0]

!=n[-1

]:return

false

ruturn fn(n[1:

-1])

a=fn(

'abcba'

)print

(a)

滿足以下兩個條件的都是高階函式

1、接受函式作為引數

2、將函式作為返回值的函式

當使用乙個函式作為引數時,實際上是將指定的**傳遞給了目標函式

例:將指定列表中的偶數儲存到乙個新的列表中並返回

def

fn(lis)

:def

fn1(n)

:if n%2==

0:return

true

new_list=

for i in lis:

if fn(i)

:return new_list

將上面**改為高階函式

def

fn(n)

:if n%2==

0:return

true

deffn1

(fun,lis)

:#接受乙個函式作為引數。fn1()函式就是乙個高階函式

new_list=

for i in lis:

if fun(i)

:return new_listl=[

1,2,

3,4,

5,6,

7,8,

9,10]

a=fn1(fn,l)

print

(a)

匿名函式是乙個lambda表示式

匿名函式最大的好處就是只會呼叫一次,用完就會從記憶體中消失

匿名函式一般都是作為引數使用,其他地方不不用

lambda函式表示式是用來建立一些簡單的函式,是函式另一種方式

lambda語法:lambda 引數列表:返回值

print

(lambda a,b:a+b)

#定義乙個函式實現兩個數的和

fn0=

lambda a,b:a+b#將匿名函式賦值給乙個變數

print fn0(1,

3)

filter()函式

該函式可以從序列中過濾出符合條件的元素,儲存到乙個新的序列

使用時需要兩個引數1、函式(根據該函式來過濾序列),2、需要過濾的序列

def

fn(n)

:if n%2==

0:return

truel=[

1,2,

3,4,

5,6,

7,8,

9,10]

a=list

(filter

(fn,l)

)print

(a)

map()函式

改函式可以對可迭代物件中所有元素做指定操作,然後將其新增到乙個新的物件中返回

l=[1

,2,3

,4,5

,6,7

,8,9

,11]#將l中所有元素加1

lambda i : i+1,l

r=map

(lambda i:i+

1,l)

print

(list

(r))

sort()函式

該函式可對列表當中的元素進行排序

關鍵字key需要乙個函式作為引數,每次都會以列表中的乙個元素作為引數來呼叫函式,並且使用函式的返回值來比較大小

lst=

['bb'

,'aaa'

,'c'

,'ddddddd'

]lst.sort(key=

len)

print

(lst)

sorted()函式

改函式會返回乙個新的列表

lst=[3

,'2',1

,'6']r=

sorted

(lst,key=

int)

print

(r)

將函式作為返回值返回,也是一種高階函式

通過閉包可建立一些只有當前函式才能訪問的物件,還可以將一些私有的資料藏在閉包中

形成閉包的條件:

函式巢狀

將內部函式作為返回值返回

內部函式必須使用到外部函式的變數

deffn(

):deffn2()

: a=

10print

('我是fn2'

,a)return fn2-

--在內部函式將fn2作為返回值返回

r=fn()r(

)

裝飾器的作用:不修改原函式,對函式進行拓展

def

fn(a,b)

: r=a+b

return r

現要求在上面函式執行前列印「開始執行」函式執行後列印「結束執行」

#裝飾器

defstart_end

(old)

:#----用來對其他函式進行擴充套件

#old為要拓展的函式物件

defnew_function

(*args,

**kwargs)

:#---*args,**kwargs裝包

print

('開始執行'

) result=old(

*args,

**kwargs)

#---*args,**kwargs解包

print

('結束執行'

)return result

return new_function

@start_end

deffn

(a,b)

: r=a+b

return r

a=fn(1,

3)print

(a)

python基礎之高階函式(下)

高階函式是滿足下列條件之一的即為高階函式。高階函式的引入 1 1 定義乙個函式,將指定列表中的偶數,儲存到乙個新的列表中。list list range 1 11,1 deffn a new list for i in list if i 2 0 return new list print fn l...

python 基礎 4 3 高階函式下和匿名函式

一 匿名函式 顧名思議就是沒有名字的函式,那為什麼要設立匿名函式,他有什麼作用呢?lambda 函式就是一種快速定義單行的最小函式,可以用在任何需要函式的地方。常規版 def fun x,y return x y lambda 示例 usr bin python coding utf 8 time ...

js基礎函式(下)

儲存對 的熱愛,並儲存懷疑態度 入口 引數 function fn a fn 1 實參 利用陣列的索引和長度配合迴圈,獲取arguments中儲存的實參 應用場景 當函式的實參個數不確定時,可以使用arguments找到所有實參 function fn a 形參 console.log argume...