python四:函數練習--小白博客
阿新 • • 發佈:2019-03-23
當前 字符串 smtp 大小 imp password 不用 close sub
為什麽要有函數?
函數式編程定義一次,多出調用
函數在一定程度上可以理解為變量
函數的內存地址加上()就是調用
函數本身也可以當做參數去傳參
不用函數:
組織結構不清晰
代碼的重復性
def test():#test就是函數名,裏面的代碼塊就是值 print(‘你好‘) print(test) #函數不加(),則只返回內存地址 def bar(x):#x叫形參 print(x) bar(‘s‘)#s叫實參 def foo(x, y=2):#y相當於默認值,如果傳參數會把y覆蓋,如果不傳參數默認就是2 print(x + y) foo(x=2,y=9) def bar(*args): print(args)#args返回的是一個元組,args名字可以自定義,*必須有 print(*args) #返回輸入值 bar(1,2,3,4,5,6,7,8,‘x‘) def bar(**shenchenlin): print(shenchenlin)#kwargs返回的是一個字典,kwargs名字可以自定義,**是必須有的 bar(name=‘申晨林‘, age=‘25‘) # return 返回,把函數的執行結果返回,return下面的代碼不會執行 def test(x, y):return x + y def bar(x,y): return x + y res = bar(test(1,2), 100)
#監控
# 如果c盤使用率超過10%,print(cpu使用率超過10%)
# 如果內存使用率超過80%,print(內存使用率超過80%)
# 如果cpu使用率超過70%,print(cpu使用率超過70%)
import psutil import yagmail info = {} def disk(): disk_total = int(psutil.disk_usage(‘c:‘)[0]/1024/1024/1024) disk_used= int(psutil.disk_usage(‘c:‘)[1]/1024/1024/1024) disk_free = int(psutil.disk_usage(‘c:‘)[2]/1024/1024/1024) disk_percent = psutil.disk_usage(‘c:‘)[3] disk_info = { ‘disk_total‘:disk_total, ‘disk_used‘: disk_used, ‘disk_free‘: disk_free, ‘disk_percent‘: disk_percent } return disk_info def mem(): mem_total = int(psutil.virtual_memory()[0]/1024/1024) mem_free = int(psutil.virtual_memory()[1]/1024/1024) mem_percent = psutil.virtual_memory()[2] mem_used = int(psutil.virtual_memory()[3]/1024/1024) mem_info = { ‘mem_total‘: mem_total, ‘mem_free‘: mem_free, ‘mem_percent‘: mem_percent, ‘mem_used‘: mem_used } return mem_info def cpu(): cpu_percent = psutil.cpu_percent(1) cpu_info = { ‘cpu_percent‘: cpu_percent } return cpu_info def sendmail(subject,contents): yag = yagmail.SMTP(user=‘[email protected]‘, password=‘lizhaoqwe123123‘, host=‘smtp.163.com‘) yag.send(to=‘[email protected]‘, cc=‘[email protected]‘, subject=subject, contents=contents) yag.close() def main(): disk_info = disk() mem_info = mem() cpu_info = cpu() info.update(disk_info) info.update(mem_info) info.update(cpu_info) msg = ‘硬盤總大小:%sG\n硬盤使用大小:%sG\n硬盤剩余大小:%sG\n硬盤使用率:%s%%\n內存總大小:%sM\n內存剩余大小:%sM\n內存使用率:%s%%\n內存使用大小:%sM\ncpu使用率:%s%%‘ % (info[‘disk_total‘],info[‘disk_used‘],info[‘disk_free‘],info[‘disk_percent‘],info[‘mem_total‘],info[‘mem_free‘],info[‘mem_percent‘],info[‘mem_used‘],info[‘cpu_percent‘]) if info[‘disk_percent‘] > 80: sendmail(‘郵件報警‘,msg) if __name__ == ‘__main__‘: main()
if __name__==‘main‘:命令的理解與練習
print(‘戀習Python‘) def main(): print(‘戀習Python‘) if __name__ == ‘__main__‘: main() print(‘跟著菜鳥分析,練習Python越練越戀‘) 其運行原理也就是: 由於每個python模塊(python文件)都包含內置的變量__name__, 當運行模塊被執行的時候,__name__等於文件名(包含了後綴.py)。 如果import到其他模塊中,則__name__等於模塊名稱(不包含後綴.py)。 而“__main__”等於當前執行文件的名稱(包含了後綴.py)。所以當模塊 被直接執行時,__name__ == ‘__main__‘結果為真;而當模塊被import到 其他模塊中時,__name__ == ‘__main__‘結果為假,就是不調用對應的方法。
# 隨機生成驗證碼
import random # 導入模塊 def v_code(): # 驗證碼一般用循環 數字和字母相平的驗證碼 res="" # 驗證碼是字符串 首先有個初始值 for i in range(5): #5表示驗證碼5個隨機數 num = random.randint(0,9) # 取到的數字 alf = chr(random.randint(65,90) )#chr chr()函數是輸入一個整數【0,255】返回其對應的ascii符號 s = str(random.choice([num, alf]))# 做字符的轉換 #res += random.choice([num, alf]) # 讓字母和數字隨機拼接起來,choice在s1和s2裏面隨機選擇一個。 res +=s # 這是上面步驟的簡寫 return res # 返回的是字符串平接的結果 print(v_code())# 調用函數
匿名函數:沒有名字函數********
def test(x,y): return x+y res = test(1,2) print(res) sum = lambda x,y: x+y print(sum(1,2)) info = { ‘li‘:2000, ‘zhao‘:35000, ‘wu‘: 25000, ‘du‘: 30000 } def func(k): return info[k]
#通過value比較取KEY
res = max(info,key=func)
print(res)
max
print(max(info,key=lambda k: info[k]))
sorted排序
print(sorted(info,key=lambda k: info[k],reverse=True))
map映射
name = [‘zhao‘, ‘du‘, ‘wu‘] def test(name): return ‘%s_NB‘ % name res = map(lambda n:‘%s_NB‘ % n, name) print(list(res))
filter過濾
name = [‘zhao_NB‘, ‘du_NB‘, ‘wu‘] res = filter(lambda k: k.endswith(‘NB‘), name) print(list(res))
python四:函數練習--小白博客