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
))
第二種: 函式中含有yielddef
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...