python之路 day10 閉包函式

2022-09-08 05:18:08 字數 3477 閱讀 8622

1.命名關鍵字引數

格式:在*後面的引數都是命名關鍵字引數

特點:1.必須被傳值

2.約束函式的呼叫者必須按照key=value的形式傳值

3.約束函式的呼叫者必須用我們指定的key名

1

def auth(*args,**kwargs):

2"""

3使用方式auth(name="egon",pwd="123")

4:param args:

5:param kwargs:

6:return:

7"""8#

print(args,kwargs)

9if len(args) !=0:

10print('

必須用關鍵字的形式傳參')

11return

12if

'name

'not

inkwargs:

13print('

必須用指定的key名name')

14return

15if

'pwd

'not

inkwargs:

16print('

必須用指定的key名pwd')

17return

1819 name=kwargs['

name']

20 pwd=kwargs['

pwd']21

print(name,pwd)

2.函式巢狀

1.函式的巢狀呼叫:在函式內又呼叫了其他函式

def

max(x,y):

if x>y:

reryrn x

else

:

return

ydef

max3(x,y,z):

res1 =max2(x,y)

res2 =max2(rea1,z)

return

res2

print(max3(11,199,2))

2,函式的巢狀定義:在函式內又定義了其他函式

def

func1():

print('

from func1')

def func2(): #

func2=記憶體位址

print('

from func2')

func1()

def

f1():

print('f1'

)

deff2():

print('f2'

)

deff3():

print('f3'

) f3()

f2()

f1()

'''f1

f2f3

'''

3.命名空間和作用域

1.命名空間:存放名字和值繫結關係的地方

1.2.命名空間分類: 

1.2.1內建命名空間:存放python直譯器自帶的名字,在直譯器啟動時就生效,直譯器關閉則失效

1.2.2全域性命名空間:檔案級別的名字,在執行檔案的時候生效,在檔案結束或者在檔案刪除的時候失效

1.2.3區域性命名空間:存放函式內定義的名字(函式的引數以及函式內名字都存放在區域性變數空間)---在函式呼叫時臨時生效,函式結束則失效

載入順序:內建命名空間-----全域性命名空間---區域性命名空間

查詢名字:區域性命名空間-----全域性命名空間-----內建命名空間

2:作用域

1.全域性變數域:包含的是內建命名空間與全域性命名空間的名字

特點:在任何位置都能訪問到

該範圍內的名字會伴隨程式整個生命週期

2.區域性作用域:包含的是區域性命名空間的名字

特點:只能在函式內使用

呼叫函式是生效,呼叫結束失效

4,函式物件

1,函式可以被引用

def

bar():

print('

from bar')

f =bar

f()

2,可以當作引數傳入

def

bar():

print(』from

bar『)

def func()

3,可以當作函式的返回值

def

bar():

print(』from

bar『)

deffoo(func):

return

func

f =foo(bar)

f()

4,可以當作容器型別的元素

def

get():

print('

from get')

defput():

print('

from put')

l=[get,put]

print

(l)l[0]()

def

auth():

print('

登陸。。。。。')

defreigster():

print('

註冊。。。。。')

defsearch():

print('

檢視。。。。')

deftransfer():

print('

轉賬。。。。')

defpay():

print('

支付。。。。')

dic=

definteractive():

while

true:

print("""

1 認證

2 註冊

3 檢視

4 轉賬

5 支付

""")

choice=input('

>>:

').strip()

if choice in

dic:

dic[choice]()

else

:

print('

非法操作')

interactive()

5,閉包函式

定義在函式內部的函式,並且該函式包含對外部函式作用域中名字的引用,該函式就成為閉包函式

def

outter():

name='

egon

'def

inner():

print('

my name is %s

' %name)

return inner

inner()被稱為閉包函式。

inner()定義在函式outter外部,outter函式的作用域內部變數name,在inner內被引用

python之路 day10 函式高階

一 函式引數 動態傳參 1 動態接收位置引數 在引數位置編寫 表示接收任意內容 動態接收引數的時候要注意 動態引數必須在位置引數後面 這時程式執行會報錯。因為前面傳遞進去的所有位置引數都被 food接收了。a和b永遠接收不到引數 2 動態接收關鍵字引數 在python中可以動態的接收引數,但是 這種...

day 10 函式名,閉包,迭代器

1.函式名的使用 1.函式名是乙個變數,函式名儲存的是函式的記憶體位址 2.函式名可以賦值給其他變數 3.函式名可以當容器類物件的元素 4.函式名可以當其他函式的引數 5.函式名可以做函式的返回值 2.閉包 閉包就是內層函式對外層函式 非全域性 變數的使用 1.閉包的作用 1.可以保護變數不收侵害 ...

python學習之路 協程 day10

三.協程應用 greenlet greenlet和gevent必須要安裝 此處在pycharm上安裝 必須提前安裝easy install,pip 此處用的python27,python30上pip安裝後一直無法使用,會繼續跟進此問題 g2.switch 切換 print 23 g2.switch ...