Покойный ученый отмечает --Python таинственной функции

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)

 

——————————————————————分割线————————————————————————————

рекомендация

отwww.cnblogs.com/feige2L/p/10969454.html