:#過載__enter__()方法
("進入上下文管理器"
)return self
def__exit__
(self, exc_type, exc_val, exc_tb)
:#過載__exit__()方法
("退出上下文管理器"
)def
run(self)
("democlass的某個例項物件在執行"
)with democlass(
"python123"
)as f:
#as引用的是__enter__的返回值
f.run(
)
class
demolterator
(object):
def__init__
(self,container)
: self.container=container
self.salt=
len(self.container)
def__iter__
(self)
:return self
def__next__
(self)
: self.salt-=
1print
(self.salt)
if self.salt>=0:
return self.container[self.salt]
else
:raise stopiteration
di=demolterator([1
,2,3
,4,5
,6,7
,8])
for i in di:
print
(i,end=
"")
import time
class
demolterator
(object):
def__init__
(self,container)
: self.container=container
def__iter__
(self)
:return self
def__next__
(self)
: self.container=self.container+
1return self.container
di=demolterator(1)
for i in di:
print
(i) time.sleep(
1)
#設計原則
#1.函式中有迭代/迴圈過程
#2.每次結果以yield方式表達
#3.結合for..in..使用
defgetvalue
(max):
import random
ls=list
(range(10
))print
(ls,end="")
for i in
range
(max):
yield ls[random.randint(0,
9)]for i in getvalue(10)
:print
(i)
"""將函式作為引數傳給另乙個函式
裝飾器函式必須返回乙個函式物件引用,否則無法利用語法糖,因此需要內部定義乙個函式
fi(age)(f2(func))
@fi(arg)
@f2def func():
pass
"""def
bar(foo)
:def
(a):
print(""
.format
("begin"))
foo(a)
print(""
.format
("end"))
@bar
defprinta
(a):
print
(f"這是變數"
)printa(
"python123"
)
from datetime import datetime
import time
defbar
(foo)
:def()
:print
("開始時間"
,datetime.now())
foo(
)print
("結束時間"
,datetime.now())
@bar
defprinta()
:print
("程式開始執行"
) time.sleep(3)
print
("程式結束執行"
)printa(
)
考試晉級(排序)
有n個人參加了期末考試,為了檢測大家真正的學習成績老師決定對於成績好的同學進行第二輪測試,當然不是每個人都有進入第二輪的機會,這裡有個根據期末考試分數制定的晉級規則 1 分數高的優先晉級 2 至多只能允許k個人晉級下一輪 3 為了保證公平分數相同的人要麼一起晉級要麼一起出局 老師最近很忙不知道最終到...
python菜鳥晉級10 資料庫操作
python3發布以來,獲取了廣大程式設計師們的差評,說不穩定,又是不相容什麼的,不過差評歸差評,python3既然已經發布,肯定是個趨勢,但在python3.4裡面,使用原來python2.7的mysqldb已經不能連線mysql資料庫了,比較令人糾結,不過我們可以使用pymysql,來完成連線m...
運維晉級指導
運維也是分階段,分層次的!此文借鑑參考運維指導!0.熟悉常見硬體配置,了解常見硬體體系 1.會搭建常見服務 理解服務工作原理 2.精通系統工作原理 到這一步已經很少有人能做到了,能過濾掉 80 3.熟悉多種發行版本,redhat 系 fedora centos debian 系 ubuntu gen...