python函数分为_python 函数
一、為什么要有函數(shù)?沒有函數(shù)的困擾
1.組織結(jié)構(gòu)不清晰,可讀性差
2.代碼冗余
3.可擴展性差
二、什么是函數(shù)
具備某一個功能的工具---》》函數(shù)事先準(zhǔn)備工具-》函數(shù)的定義拿來就用,重復(fù)使用-》函數(shù)的調(diào)用
ps:先定義后調(diào)用
三、函數(shù)的分類:
內(nèi)置函數(shù):len,max;自定義函數(shù):def
def 函數(shù)名():
代碼塊1...
代碼塊2...
定義階段:定義一個簡單的函數(shù)
deftest():print('你好')
在這個階段要保證語法的正確性,因為此階段只檢查語法格式
調(diào)用階段:
test()
運行結(jié)果:
如果test后邊不加()
print(test)
則會打印test的內(nèi)存地址:
所以,只要內(nèi)存地址后邊加 () ,就是調(diào)用結(jié)果
1)函數(shù)種類:
第一種:無參函數(shù)
deftest():print('你好')
test()
第二種:有參函數(shù)
def test(name,age=18): #有參函數(shù)可以設(shè)置默認(rèn)值
print('my name is %s,my age is %s' %(name, age))
test('aaa',12) #有參函數(shù)默認(rèn)調(diào)用默認(rèn)的值,如果不傳參數(shù),調(diào)用默認(rèn)值,如果傳參數(shù),默認(rèn)值被修改
第三種:空函數(shù)
deftest():pass
空函數(shù)主要用于占位,搭思路框架
2)函數(shù)的參數(shù)分為兩種
形參:在定義階段括號內(nèi)指定的參數(shù),相當(dāng)于變量名
實參:在調(diào)用階段括號內(nèi)傳入的值稱之為實參,相當(dāng)于值
返回值:函數(shù)可以有多個return,但是只能執(zhí)行一次return
執(zhí)行return函數(shù)就立刻結(jié)束,并且return后的值當(dāng)做本次調(diào)用結(jié)果返回
deftest(age):if age < 18:print('aaaaa')return '青春!'
print('gggggg')print('gggggg')return '哈哈哈'result= test(17)print(result)
運行結(jié)果:
return 與print 區(qū)別
deftest():return 'aaa'result= test()
deftest():print('aaa')
test()
return函數(shù)結(jié)果可以被調(diào)用,print 無法被調(diào)用
3)psutil模塊(系統(tǒng)性能檢測)
第三方模塊需要安裝
然后搜索需要安裝的模塊,install 即可
查看cpu的邏輯核心數(shù),以及實際核心數(shù)(False)
import psutil #導(dǎo)入之后就可以用了
res = psutil.cpu_count() #不加false默認(rèn)是邏輯cpu個數(shù)
print(res)
運行結(jié)果:
查看cpu的使用率,以及每一核心的使用率(True)
importpsutil
res= psutil.cpu_percent(1) #1秒內(nèi)cpu的使用率
print(res)
運行結(jié)果:
查看內(nèi)存使用率
importpsutil
res= psutil.virtual_memory() #內(nèi)存使用率信息
print(res)
運行結(jié)果:
若只取百分比'%.2f%%',添加%號
importpsutil
res= psutil.virtual_memory()#內(nèi)存使用率信息
print('%.2f%%' % res[2])
運行結(jié)果:
查看硬盤使用情況
importpsutil
res= psutil.disk_usage('C:') #硬盤分區(qū)的使用率
print(res)
運行結(jié)果:
若在Linux系統(tǒng)中,也可以把C盤換成/root/等目錄進(jìn)行查看
查看網(wǎng)絡(luò)流量
importpsutil
res= psutil.net_io_counters()#查看網(wǎng)絡(luò)流量
print(res)
運行結(jié)果:
分別代表:發(fā)送的流量;接收的流量;包的發(fā)送;包的接受;錯誤;錯誤輸出;混入;中途丟失
練習(xí):監(jiān)控
項目:監(jiān)控cpu,內(nèi)存,硬盤,網(wǎng)卡流量的情況,并報警發(fā)郵件
思想:先搭框架,在逐個填寫優(yōu)化
defcpu_info():pass
defmem_info():pass
defdisk_info():pass
defnetwork_info():pass
defsend_mail():pass
實際服務(wù)的搭建:
import psutil #調(diào)用psutil模塊
import smtplib #調(diào)用smtplib模塊
from email.mime.text import MIMEText #郵件固定格式
from email.header importHeaderdef cpu_info(): #cpu函數(shù)
cpu = '%.2f%%' % psutil.cpu_percent(1) #1秒內(nèi)cpu使用率,加%
returncpudef mem_info(): #內(nèi)存函數(shù)
mem = psutil.virtual_memory() #內(nèi)存使用的整體情況
mem_per = '%.2f%%' % mem[2] #內(nèi)存使用率,加%
mem_total = str(int(mem[0]/1024/1024)) + 'M' #總內(nèi)存
mem_used = str(int(mem[3]/1024/1024)) + 'M' #已使用內(nèi)存
info = { #建立鍵值對,方便調(diào)用
'mem_per': mem_per,'mem_total': mem_total,'mem_used': mem_used
}returninfodef disk_info(): #硬盤函數(shù)
c = psutil.disk_usage('C:') #C盤使用情況
d = psutil.disk_usage('D:') #D盤使用情況
c_per = '%.2f%%' % c[3] #C盤使用率,加%
d_per = '%.2f%%' % d[3] #D盤使用率,加%
info ={'c_per': c_per,'d_per': d_per
}returninfodef network_info(): #網(wǎng)卡函數(shù)
network = psutil.net_io_counters() #網(wǎng)卡使用情況
network_sent = str(int(network[0]/1024)) + 'kb' #網(wǎng)卡發(fā)送的流量
network_recv = str(int(network[1]/1024)) + 'kb' #網(wǎng)卡接收的流量
info ={'network_sent': network_sent,'network_recv': network_recv
}returninfodef send_mail(message): #郵件函數(shù)
sender = 'aaaaaaa@163.com' #以下所有郵箱設(shè)置為自己的即可
receiver = ['aaaaaaa@163.com']
subject= '報警'username= 'aaaaaaa@163.com'password= 'xxxxxx' #163郵箱在此需要輸入的是第三方登錄密碼
msg = MIMEText(message, 'plain', 'utf-8')
msg['Subject'] = Header(subject, 'utf-8')
msg['From'] = 'aaaaaaa@163.com>'msg['To'] = "aaaaaaa@163.com"smtp=smtplib.SMTP()
smtp.connect('smtp.163.com') #跟所使用的郵箱所匹配
smtp.login(username, password)
smtp.sendmail(sender, receiver, msg.as_string())
smtp.quit()def main(): #主函數(shù)
cpu = cpu_info() #調(diào)用之前函數(shù)
mem =mem_info()
disk=disk_info()
network=network_info()
msg= '''#設(shè)置一個變量整合所有需要監(jiān)控的元素
cpu使用率:%s
=============
內(nèi)存使用率:%s
總內(nèi)存:%s
使用內(nèi)存:%s
=============
C盤使用率:%s
D盤使用率:%s
=============
網(wǎng)卡發(fā)送流量:%s
網(wǎng)卡接收流量:%s''' % (cpu, mem.get('mem_per'), mem.get('mem_total'), mem.get('mem_used'), disk.get('c_per'), disk.get('d_per'), network.get('network_sent'), network.get('network_recv'))if int(cpu[:-4]) > 1 or int(mem.get('mem_per')[:-4]) > 20 or int(disk.get('c_per')[:-4]) > 90 or int(disk.get('d_per')[:-4]) > 90:#這里設(shè)置了cpu,內(nèi)存,C盤,D盤的報警界限為90%
send_mail(msg)else:print('沒到閾值')if __name__ == '__main__': #其他端無法調(diào)用以下
main()
總結(jié)
以上是生活随笔為你收集整理的python函数分为_python 函数的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: git 拉取远端仓库_Git : 建立自
- 下一篇: 树莓派模拟电路_9.树莓派3B+ PWM