为什么要有函数?
函数式编程定义一次,多出调用
函数在一定程度上可以理解为变量
函数的内存地址加上()就是调用
函数本身也可以当做参数去传参

不用函数:
组织结构不清晰
代码的重复性

def test():#test就是函数名,里面的代码块就是值
print('你好')
print(test)  #函数不加(),则只返回内存地址 def bar(x):#x叫形参
print(x)
bar('s')#s叫实参 def foo(x, y=):#y相当于默认值,如果传参数会把y覆盖,如果不传参数默认就是2
print(x + y)
foo(x=,y=) def bar(*args):
print(args)#args返回的是一个元组,args名字可以自定义,*必须有
print(*args) #返回输入值
bar(,,,,,,,,'x') def bar(**shenchenlin):
print(shenchenlin)#kwargs返回的是一个字典,kwargs名字可以自定义,**是必须有的
bar(name='申晨林', age='') # return 返回,把函数的执行结果返回,return下面的代码不会执行
def test(x, y):
return x + y
def bar(x,y):
return x + y
res = bar(test(,), )

#监控

# 如果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:')[]///)
disk_used = int(psutil.disk_usage('c:')[]///)
disk_free = int(psutil.disk_usage('c:')[]///)
disk_percent = psutil.disk_usage('c:')[]
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()[]//)
mem_free = int(psutil.virtual_memory()[]//)
mem_percent = psutil.virtual_memory()[]
mem_used = int(psutil.virtual_memory()[]//)
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()
cpu_info = {
'cpu_percent': cpu_percent
}
return cpu_info def sendmail(subject,contents):
yag = yagmail.SMTP(user='18618250232@163.com', password='lizhaoqwe123123', host='smtp.163.com')
yag.send(to='18618250232@163.com', cc='18618250232@163.com', 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'] > :
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个随机数
num = random.randint(,) # 取到的数字
alf = chr(random.randint(,) )#chr chr()函数是输入一个整数【,】返回其对应的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(,)
print(res) sum = lambda x,y: x+y
print(sum(,))
info = {
'li':,
'zhao':,
'wu': ,
'du':
} 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四:函数练习--小白博客的更多相关文章

  1. python之yagmail模块--小白博客

    yagmail 实现发邮件 yagmail 可以简单的来实现自动发邮件功能. 安装 pip install yagmail 简单例子 import yagmail #链接邮箱服务器 yag = yag ...

  2. Python爬虫简单实现CSDN博客文章标题列表

    Python爬虫简单实现CSDN博客文章标题列表 操作步骤: 分析接口,怎么获取数据? 模拟接口,尝试提取数据 封装接口函数,实现函数调用. 1.分析接口 打开Chrome浏览器,开启开发者工具(F1 ...

  3. 这几天有django和python做了一个多用户博客系统(可选择模板)

    这几天有django和python做了一个多用户博客系统(可选择模板) 没完成,先分享下 断断续续2周时间吧,用django做了一个多用户博客系统,现在还没有做完,做分享下,以后等完善了再慢慢说 做的 ...

  4. 第四篇Scrum冲刺博客

    第四篇Scrum冲刺博客 一.站立式会议 提供当天站立式会议照片一张 二.每个人的工作 成员 已完成工作 明天计划完成的工作 遇到的困难 林剑峰 用户界面跳转到用户信息页面的按钮,设计用户信息页面 测 ...

  5. python环境变量配置 - CSDN博客

    一.下载: 1.官网下载python3.0系列(https://www.python.org/) 2.下载后图标为: 二.安装: Window下: 1.安装路径: 默认安装路径:C:\python35 ...

  6. 第四篇Scrum冲刺博客--Interesting-Corps

    第四篇Scrum冲刺博客 站立式会议 1.会议照片 2.队友完成情况 团队成员 昨日完成 今日计划 鲍鱼铭 搜索页面跳转.设计及布局实现 音乐详情页面跳转.设计及布局实现设计 叶学涛 编写设置页面 编 ...

  7. python第四章:函数--小白博客

    Python函数 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段. 函数能提高应用的模块性,和代码的重复利用率.你已经知道Python提供了许多内建函数,比如print().但你也可 ...

  8. python网络爬虫 新浪博客篇

    上次写了一个爬世纪佳缘的爬虫之后,今天再接再厉又写了一个新浪博客的爬虫.写完之后,我想了一会儿,要不要在博客园里面写个帖子记录一下,因为我觉得这份代码的含金量确实太低,有点炒冷饭的嫌疑,就是把上次的代 ...

  9. Python开发【项目】:博客后台

    概述 通过自己写的博客后台代码.思路,来与武sir的代码进行一个差异化的比较,记录之间的差距,改善以后写代码的思路 博客后台这个项目,对之前Django学习的各个知识点都有涉及到,非常重要 用户登录验 ...

随机推荐

  1. [翻译]LVM中逻辑卷的最大大小限制

    前言: 本文是对这篇博客Maximum Size Of A Logical Volume In LVM的翻译,敬请尊重原创和翻译劳动成果,那些随意转载的大爷们,好歹也自觉注明出处.谢谢! 英文原文地址 ...

  2. 监控MySQL或Web服务是否正常

    在工作中,我们往往利用脚本定时监控本地.远端数据库服务端或Web服务是否运行正常,例如:负载高.cup高.连接数满了等.... 方法一:根据端口 本地:netstat/ss/lsof ①   nets ...

  3. linux ubuntu 关于vim得一些基本命令

    1.vim显示行号 :set number 2. 快捷键 J 向下 K 往上 H 向左 L 向右 ctrl+shift+T 打开新窗口 ctrl+Page Down 所有vim窗口向下切换 ctrl+ ...

  4. May 27. 2018 Week 22nd Sunday

    All things come to those who wait. 苍天不负有心人. It is said that those who are patient can see what their ...

  5. spark program guide

    概述 Spark 应用由driver program 组成,driver program运行用户的主函数,在集群内并行执行各种操作 主要抽象RDD: spark提供RDD,是贯穿整个集群中所有节点的分 ...

  6. sqrt函数

    import numpy as np B = np.arange(3) print (B) print (np.sqrt(B)) #求平方根

  7. I/O 机制的介绍(Linux 中直接 I/O 机制的介绍)

    IO连接的建立方式 1.缓存IO.流式IO: 2.映射IO.块式IO: 3.直接IO. IO的方式: 同步.异步.定时刷新: MMAP与内核空间 mmap使用共享用户空间与内核空间实现: 直接 I/O ...

  8. Springboot监控之一:SpringBoot四大神器之Actuator

    介绍 Spring Boot有四大神器,分别是auto-configuration.starters.cli.actuator,本文主要讲actuator.actuator是spring boot提供 ...

  9. Python 字典方法

    访问字典的值 字典中的 键/值 实际上就是一种映射关系,只要知道了 “键”,就肯定知道 “值”. >>> my_dict = dict(name = 'zhangsan',other ...

  10. [ZJOI2011]礼物

    嘟嘟嘟 正是因为有这样的数据范围,解法才比较暴力. 我们假设取出的长方体常和宽相等,即\(a * a * b\).这样我们每次换两条边相等,搞三次就行. 那么对于第\(k\)层中的第\((i, j)\ ...