# 作業:# 1、編寫課上講解的有參裝飾器準備明天默寫
def auth(db_type):
def otter(func):
username = input("your name:").strip()
password = input("your pwd:").strip()
if db_type == "file":
print("基於檔案的登陸")
if username == "anna" and password == "123":
res = func(*args,**kwargs)
return res
else:
print("password wrong")
elif db_type == 'file':
print("檔案file")
elif db_type == "mysql":
print("資料庫mysql")
elif db_type == "ldap":
print("基於ldap")
else:
print("wrong")
return otter
@auth(db_type="file")
def index(x,y):
print("index %s %s"%(x,y))
@auth(db_type="mysql")
def home(name):
print("home>>>"%name)
@auth(db_type="ladp")
def transfer():
print("transfer>>>"%transfer)
index(11,22)
home("anna")
transfer()
# 2:還記得我們用函式物件的概念,製作乙個函式字典的操作嗎,來來來,我們有更高大上的做法,在檔案開頭宣告乙個空字典,
# 然後在每個函式前加上裝飾器,完成自動新增到字典的操作
d = {}
key = 0
def add_dict(func):
global key
d["{}".format(key)] = func
key += 1
@add_dict
def index(x,y):
print("index %s %s"%(x,y))
@add_dict
def home():
pass
index(11,22)
# 3、 編寫日誌裝飾器,實現功能如:一旦函式f1執行,則將訊息2017-07-21 11:12:11 f1 run寫入到日誌檔案中,日誌檔案路徑可以指定
# 注意:時間格式的獲取
import time
time.strftime('%y-%m-%d %x')
import time
from functools import wraps
src = none
def access_log(func):
@wraps(func)
global src
if not src:
inp_src = input("請指定儲存路徑:").strip()
src = inp_src
func_name = func()
if func_name:
with open(r"{}access.log".format(src),'a',encoding="utf-8") as f:
f.write("{} {}run\n".format(time.strftime("%y-%m_%d %x"),func_name))
@access_log
def test1():
time.sleep(1)
print("test1執行完畢")
return test1.__name__
@access_log
def test2():
time.sleep(1)
return test2.__name__
@access_log
def test3():
time.sleep(1)
return test3.__name__
test1()
test2()
test3()
# 4、基於迭代器的方式,用while迴圈迭代取值字串、列表、元組、字典、集合、檔案物件
def wrpper(inp_type):
print("this is {}".format(type(inp_type)))
while true:
try:
print(next(inp_type))
except stopiteration:
break
wrpper("123".__iter__())
wrpper([1,2,3].__iter__())
wrpper((1,2,3).__iter__())
wrpper(.__iter__())
wrpper(.__iter__())
with open('access.log',"r",encoding="utf-8") as f:
wrpper(f.__iter__())
# 5、自定義迭代器實現range功能
def my_range(start,stop,step=1):
while start < stop:
start += step
yield start
for i in my_range(1,10,2):
print(i)
# ********************本週選做作業如下********************
# 編寫**閱讀程式實現下屬功能
# # 一:程式執行開始時顯示
# 0 賬號註冊
# 1 充值功能
# 2 閱讀**
# # 二: 針對檔案db.txt,內容格式為:"使用者名稱:密碼:金額",完成下述功能
# 2.1、賬號註冊
# 2.2、充值功能
# # 三:檔案story_class.txt存放類別與**檔案路徑,如下,讀出來後可用eval反解出字典
# ,"1":,}
## 3.1、使用者登入成功後顯示如下內容,根據使用者選擇,顯示對應品類的**編號、**名字、以及**的**
# """
# 0 玄幻武俠
# 1 都市愛情
# 2 高效養豬36技
# """
## 3.2、使用者輸入具體的**編號,提示是否付費,使用者輸入y確定後,扣費並顯示**內容,如果餘額不足則提示餘額不足
## # 四:為功能2.2、3.1、3.2編寫認證功能裝飾器,要求必須登入後才能執行操作
## # 五:為功能2.2、3.2編寫記錄日誌的裝飾器,日誌格式為:"時間 使用者名稱 操作(充值or消費) 金額"##
## # 附加:
# # 可以拓展作者模組,作者可以上傳自己的作品
作業3月24號
1 編寫課上講解的有參裝飾器準備明天默寫 def auth db type defdeco func name input your name strip pwd input your password strip if db type file print 基於檔案的驗證 if name egon...
3月24日學習心得
今天,主要是繼續學習拷貝控制。在昨天的三 五法則之後,首先是知道使用 default是用合成版本的函式。之後,要明確我們定義的拷貝建構函式或者拷貝賦值運算子有些時候是要阻止拷貝的。在兩者後 default即使得定義存在,但之後無法呼叫,從而實現刪除函式。e.g.struct nocopy haspt...
2023年5月24日 2023年5月24日
2010年5月24日那天晚上,我下班回家,吃完飯,雖然我不記得是自己做的飯還是買回來吃的.我捧起了 第五版 開始了我的程式生涯.在那之前是我研究了6個月還是8個月開了我的傳奇私服,十分對戰 接著是2個月的運營後花光了所有積蓄,聽起來挺嚇人,其實就5000塊而已.在這之前,是我剛開始參加工作,就感覺自...