Python函式閉包裝飾器

2022-08-16 13:03:13 字數 2633 閱讀 3442

x=2222

print

(x)def

func1():

x=65842

deffunc2():

x=65412

print

(x) func2()

func1()

print

(x)2222

65412

2222

global:呼叫全域性變數

x=8888

deffunc1():

deffunc2():

global

x x=10000000func2()

func1()

print

(x)10000000

local:呼叫外部變數

def

f1():

x=1def

f2():

nonlocal x

x=666

print

(x) f2()

f1()

666

閉包函式:

1.內部函式

2.包含對外部作用域而非全域性作用域的引用

閉包函式特點:

1.自帶作用域

2.延遲計算

closure:

name='

alex

'def

func():

name='

egon

'x=1000000000000000000000

defbar():

print

(name)

print

(x) a=1b=2

return

barf=func()

print(f.__closure__

[0].cell_contents)

print(f.__closure__[1].cell_contents)

egon

1000000000000000000000

例子:

name='

lyp'

deffunc1():

name='

xiaobai

'def

func2():

print

(name)

return

func2

func1=func1()

func1()

xiaobai

money=8000

deffunc1():

money=6000

defmo_info(name):

print('

%s有%s錢

'%(name,money))

mo_info(

'xiaobai')

func1()

xiaobai有6000錢

deff0():

name='

henbai

'def

f1():

money=6666

deff2():

print('

xiaobai has %s

'%(money))

print

(name)

return

f2

return

f1f0()()()

xiaobai has 6666henbai

裝飾器:任意可呼叫物件,被裝飾的物件也可以任意可呼叫物件

功能:在不修改被修飾物件源**以及呼叫方式的前提下為其新增新功能

原則:1.不修改源**

2.不修改呼叫方法

目標:新增新功能

裝飾器的語法:在被裝飾物件的正上方的單獨一行,@裝飾器名字(將函式作為引數傳給裝飾器)

執行順序是自上而下,計算順序是自下而上

from urllib.request import

urlopen

definfo(url):

defpa_pr():

return

urlopen(url).read()

return

pa_pr

pa_pr=info('

')print

(pa_pr())

import

random

import

time

defindex():

time.sleep(random.randrange(1,4))

print('

welcome to the page')

defsp_time(haha):

deftime_d():

start_time=time.time()

haha()

stop_time=time.time()

print('

runtime is %s

'%(stop_time-start_time))

return

time_d

index=sp_time(index)

index()

Python閉包 裝飾器

閉包 legb法則 所謂閉包,就是將組成函式的語句和這些語句的執行環境打包一起時得到的物件 閉包最重要的價值在於封裝上下文環境 下面有個列子來解釋下閉包 列 deffunx x print 開始 deffuny y returnx y print 結束 returnfuny x funx 4 pri...

python 閉包 裝飾器

2.閉包格式 return bar 返回內嵌函式 in test print in 3.使用原理 4.總結 二 裝飾器 2.格式 return test in 閉包函式返回內嵌函式 test aa test aa 裝飾 def aa 這兒如果有引數,test in也必須有一樣的引數,test in中...

python函式篇 閉包 裝飾器

作用 使函式外部能訪問函式內部區域性變數,且當函式完後依然可以儲存該變數 特徵 函式內部巢狀,內部函式訪問外部函式區域性變數,外部函式返回內部函式位址 或者直接呼叫內部函式 defa num 4deff print num return f b a b 或者 defa num 4deff print...