1. 程式人生 > >python四:函數練習--小白博客

python四:函數練習--小白博客

當前 字符串 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()函數是輸入一個整數【0255】返回其對應的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四:函數練習--小白博客