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

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

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. SQL SERVER 查询表的行数

    SELECT OBJECT_NAME(ii.id) TableName ,rows FROM sysindexes ii INNER JOIN sysobjects oo ON ( oo.id = i ...

  2. ELK-elkstack-使用消息队列

    日志通过logstash收集到redis,之后从logstash从redis读取数据存入到ES 1. logstash使用redis测试 通过标准输入到redis中 logstash配置与启动 [yu ...

  3. elixir mix 简介

    概述 mix 是 elixir 工程的构建工具,利用 mix,可以快速方便的创建 elixir 工程,写单元测试,管理 elixir 包的依赖管理等等. 我觉得刚开始学习 elixir 的时候,先简单 ...

  4. March 05th, 2018 Week 10th Monday

    Fortune favors the bold. 勇者天佑. It has been increasingly apparent that courage is the main quality we ...

  5. 更高的压缩比,更好的性能–使用ORC文件格式优化Hive

    http://lxw1234.com/archives/2016/04/630.htm 关键字:orc.index.hive Hive从0.11版本开始提供了ORC的文件格式,ORC文件不仅仅是一种列 ...

  6. linux历史命令查找快捷方式

      一.回到上次操作的目录# cd -进入上次访问目录 二.历史命令搜索操作快捷键:[Ctrl + r], [Ctrl + p], [Ctrl + n] 在终端中按捉 [Ctrl] 键的同时 [r] ...

  7. ES5-ES6-ES7_数值的扩展

    二进制与八进制数值表示法: 二进制用0b, 八进制用0o console.log(0b1010) console.log(0o56) Number.isFinite(i) 判断是否是有限大的数 con ...

  8. UVA12265-Selling Land(单调栈)

    Problem UVA12265-Selling Land Accept: 137  Submit: 782Time Limit: 3000 mSec Problem Description Inpu ...

  9. Google Colab 基本操作

    ## 上传 from google.colab import files uploaded = files.upload() for fn in uploaded.keys(): print('Use ...

  10. 钉钉自定义机器人 发送文本 换行 \n无效果

    今天用php做钉钉自定义机器人 发送文本 换行 \n无效果,原来是我一直用单引号作为定义字符串,换成双引号就ok了.