Python三器一閉

2021-10-23 04:28:52 字數 2727 閱讀 5877

from collections.abc import iterable

a =[1,

2,3,

4]b =123

print

(isinstance

(a, iterable)

)print

(isinstance

(b, iterable))-

----

---列印結果---

----

----

true

false

通過iterable來判斷乙個物件是否是可迭代物件,因此可見列表是可迭代的,整數是不可以迭代的
from collections.abc import iterator

a =[1,

2,3,

4]iter_a =

iter

(a)print

(isinstance

(iter_a, iterator)

)print

(isinstance

(a, iterator)

)

通過iterable來判斷是否是乙個迭代器

建立生成器的兩種方法

第一種: 把列表推導式的改為()

[x for x in

range(10

)]--

-->

(x for x in

range(10

))

第二種: 函式中含有yield
def

num():

num1 =

1 num2 =

2while

true

: temp_num = num1

num1, num2 = num2, num1 + num2

yield temp_num

n = num(

)print

(next

(n))

print

(next

(n))

print

(next

(n))

print

(next

(n))

print

(next

(n))--

----

----

---執行結果---

----

----

---1

2358

next()和send()的區別

生成器的特點

我們想要理解裝飾器就必須先學習閉包,因此我們把閉包放在前面

閉包案例

def

test

(number)

:def

test_in

(number_in)

:print

("in test_in 函式, number_in is %d"

% number_in)

return number+number_in

return test_in

ret = test(20)

print

(ret(

100)

)print

(ret(

200))-

----

----

---執行結果---

----

----

---in test_in 函式, number_in is

100120

in test_in 函式, number_in is

200220

案例中test返回了test_in的引用,所以當呼叫ret時ret就指向了test_in函式,而內部函式又使用了外部函式的變數number,所以這就是乙個閉包

閉包和普通函式的區別?

實現過程

使用裝飾器實現單例

def

singletondecorator

(cls)

: _instance =

none

defget_instance

(*args,

**kwargs)

:nonlocal _instance

if _instance is

none

: _instace = cls(

*args,

**kwargs)

return _instance

return get_instance

@singletondecorator

class

singleton

(object):

pass

# 建立例項物件

a = singleton(

)b = singleton(

)print(id

(a))

print(id

(b))--

----

----

----

----

---執行結果---

----

----

----

---1823904976

1823904976

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 裝飾器 ,閉包

1 裝飾器 不改變被裝飾的函式情況下附加一些功能 本質是函式,用於裝飾其他函式,附加一些本身所沒有的功能 實質 是乙個函式 引數 是你要裝飾的函式名 並非函式呼叫 返回 是裝飾完的函式名 也非函式呼叫 作用 為已經存在的物件新增額外的功能 特點 不需要對物件做任何的 上的變動 例1 計算執行時長 i...