Python функция таинственное
Функция ткани хорошо, многоразовые, сегменты кода, используемые для реализации одной или соответствующей функции.
Функциональный модуль приложения может быть улучшен, и повторное использование кода. Вы уже знаете , что Python предоставляет множество встроенных функций, таких как печать (). Но вы также можете создавать свои собственные функции, которые называются определенным пользователем функции.
A. Определение функции
1. Правила :
Вы можете определить функцию с помощью своих собственных функций, следующих простых правил:
- В функциональном блоке четкости , начиная ключевое слово, за которым следуют скобки имя и идентификатор функции () .
- Любые входящие параметры и аргументы должны быть помещены в середине круглых скобок. Между скобок может быть использовано для определения параметров.
- Первая функция утверждения может быть выборочно использована строка документации - для хранения инструкций функции.
- Начало содержимого функции двоеточие и отступы.
- вернуться [Выражение] Конец функции, выборочно возвращает значение для вызывающей стороны . При отсутствии выражения обратного эквивалента не возвращать None.
2. Функция двух фаз : фазы определения и вызова фазы
( 1 ) этап определения
Тест DEF ():
Print (100)
# память адрес
DEF Тест ():
Print (100)
Печать (Тест) адрес # печать памяти
""
<функция тестирования на 0x003FB660 >
""
(2) фазы вызова ,
Плюс адрес памяти функции () является вызов
# тест ()
II. Аргументы и параметры
# -Определенная функция в скобках , как правило , называется параметром
# Параметры , передаваемые при вызове скобки обычно называемые аргументы
# Например :
Защиту студентов (возраст):
печать ( «мой возраст% S»% возраст)
студенты (18)
возраст является параметром, 18 является аргументом
Защита сумма (х, у): # х, у параметра
печать (х)
печать (у)
сумма (10,20) # 10,20 имени аргумент
III. Конкретные параметры приложения
1 , позиционные параметры:
Задаваемые параметры слева направо,
Параметр Расположение: Параметр Обязательный
Аргумент позиции: позиция в соответствии со значением параметра передачи
Защиту Foo (х, у):
печать (х, у)
Foo (1,2)
# Результат : 1,2
2, ключевые аргументы:
По ключ = значение формы , определенные аргументы
Положение не обязательно передавать значения параметров
Обратите внимание на вопрос:
1). Ключевое слово аргумент Аргумент должен быть в правильном положении
2) при том же значении параметра не может быть повторные проходы
Защиту Foo (х, у):
печать (х, у)
Foo (у = 2, х = 1)
Результаты : 1
3, параметры по умолчанию:
При определении параметра были присвоены значения
Может или не может передать значение по значению, часто необходимо определить параметры становится параметром позиции, небольшое изменение в параметрах, определенных параметров по умолчанию (параметры)
Обратите внимание на вопрос:
1.) задания только при определении
2) параметры по умолчанию , должны быть определены в правильном положении параметра
3) Параметры по умолчанию , как правило , должны быть определены как неизменный типа «» «четкости Foo (х, у = 2):
печать (х, у)
Foo (1)
# Результат : 1,2
Foo (1,3)
# Результат : 1,3
4、可变长参数:
可变长指的是实参值的个数不固定
而实参有按位置和按关键字两种形式定义,针对这两种形式的可变长,形参对应有两种解决方案来完整地存放它们,分别是*argsh和**kwargs
#*args:传递的参数会变成元组
def foo(x,y,*args):
print(x,y,args)
foo(1,2,3)
#结果:1 2 (3,)
#**kwargs:传递的参数会变成字典
def foo(x,y,**kwargs):
print(x,y,kwargs)
foo(1,2,a=3,b=4)
#结果:1 2 {'a': 3, 'b': 4}
四.return 语句
return语句[表达式]退出函数,选择性地向调用方返回一个表达式。不带参数值的return语句返回None。
# 可写函数说明
def add_sum(arg1, arg2):
# 返回2个参数的和."
total = arg1 + arg2
print("函数内 : ", total)
return total
# 调用sum函数
total = add_sum(10, 20)
五.函数的特性
#函数可以被引用
def f1():
print('this is f1')
return 'ok'
res = f1()print(res)
#函数可以当参数传递
def foo(a):
print(a)def bar(b):
print(b)
bar(foo('你好'))
#嵌套函数
def f1():
def f2():
def f3():
print('this is f3')
f3()
f2()
f1()
六.监测内存,cpu,磁盘,并设置报警邮件
1. 监控系统资源(cpu,硬盘,内存),下载psutil软件
import psutil
内存使用情况
mem = psutil.virtual_memory()
print(mem)
print(mem[1]) #默认为列表格式,可截取下标为1的值
cpu使用率
cpu = psutil.cpu_percent(1) #一秒内cpu的占用率
print(cpu)
硬盘使用情况
disk = psutil.disk_usage('C:') #查看c盘使用情况
print(disk)
定义函数本着一个原则:尽量一个动作一个函数
2.如果系统资源超出阈值就发送报警邮件 ,下载yagmail软件
import yagmail
连接邮箱服务器
yag = yagmail.SMTP(user='[email protected]', password='——', host='smtp.qq.com') #密码password为授权码
发送邮件
yag.send(to=['356254326[email protected]','[email protected]'],subject='这是测试邮件标题', contents=['这是测试邮件的内容',r'C:\Users\Administrator.USER-20190512NQ\Desktop\sed.txt']) #可加附件
断开连接
yag.close()
3.完整代码:
import psutil
import yagmail
import time
def mem_check():
mem=psutil.virtual_memory()
return (mem[2]) #38%
def cpu_check():
cpu=psutil.cpu_percent(1) #一秒内cpu的占用率
return (cpu) #30%
def disk_check():
disk = psutil.disk_usage('C:')
return (disk[3]) #56.9
def send_mail(title,message):
yag=yagmail.SMTP(user='[email protected]',password='qktpqmfrcuxjbifg',host='smtp.qq.com')
yag.send(to='[email protected]',subject=title,contents=message)
yag.close()
def main():
disk_check()
mem_check()
cpu_check()
if __name__=='__main__':
main()
while True:
if mem_check()>40:
send_mail('内存报警','内存低于40%,请及时处理')
print('内存报警已发送')
time.sleep(120)
if disk_check()>60:
send_mail('磁盘报警','C盘空间不足,请及时处理')
print('磁盘报警已发送')
time.sleep(120)
if cpu_check()>30:
send_mail('cpu报警', 'cpu占用过大,请及时处理')
print('cpu报警已发送')
time.sleep(120)
——————————————————————分割线————————————————————————————