一、背景

在学习函数之前,一直遵循:面向过程编程,即:根据业务逻辑从上到下实现功能,其往往用一长段代码来实现指定功能,开发过程中最常见的操作就是粘贴复制,也就是将之前实现的代码块复制到现需功能处,如下:

while True:

    if cpu利用率 > 90%:

        #发送邮件提醒

        连接邮箱服务器

        发送邮件

        关闭连接

    if 硬盘使用空间 > 90%:

        #发送邮件提醒

        连接邮箱服务器

        发送邮件

        关闭连接

    if 内存占用 > 80%:

        #发送邮件提醒

        连接邮箱服务器

        发送邮件

        关闭连接

腚眼一看上述代码,if条件语句下的内容可以被提取出来公用,如下:

def 发送邮件(内容)

    #发送邮件提醒

    连接邮箱服务器

    发送邮件

    关闭连接

while True:

    if cpu利用率 > 90%:

        发送邮件('CPU报警')

    if 硬盘使用空间 > 90%:

        发送邮件('硬盘报警')

    if 内存占用 > 80%:

对于上述的两种实现方式,第二次必然比第一次的重用性和可读性要好,其实这就是函数式编程和面向过程编程的区别:

  • 函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可
  • 面向对象:对函数进行分类和封装,让开发“更快更好更强...”

函数式编程最重要的是增强代码的重用性和可读性

二、定义和使用

def 函数名(参数):

    ...

    函数体

    ...

    返回值

函数的定义主要有如下要点:

  • def:表示函数的关键字
  • 函数名:函数的名称,日后根据函数名调用函数
  • 函数体:函数中进行一系列的逻辑计算,如:发送邮件、计算出 [11,22,38,888,2]中的最大数等...
  • 参数:为函数体提供数据
  • 返回值:当函数执行完毕后,可以给调用者返回数据。

1、返回值

函数是一个功能块,该功能到底执行成功与否,需要通过返回值来告知调用者。

以上要点中,比较重要有参数和返回值:

def 发送短信():

    发送短信的代码...

    if 发送成功:

        return True

    else:

        return False

while True:

    # 每次执行发送短信函数,都会将返回值自动赋值给result

    # 之后,可以根据result来写日志,或重发等操作

    result = 发送短信()

    if result == False:

        记录日志,短信发送失败...

2、参数

为什么要有参数?

def CPU报警邮件()
#发送邮件提醒
连接邮箱服务器
发送邮件
关闭连接 def 硬盘报警邮件()
#发送邮件提醒
连接邮箱服务器
发送邮件
关闭连接 def 内存报警邮件()
#发送邮件提醒
连接邮箱服务器
发送邮件
关闭连接 while True: if cpu利用率 > 90%:
CPU报警邮件() if 硬盘使用空间 > 90%:
硬盘报警邮件() if 内存占用 > 80%:
内存报警邮件() 无参数实现
def CPU报警邮件()
#发送邮件提醒
连接邮箱服务器
发送邮件
关闭连接 def 硬盘报警邮件()
#发送邮件提醒
连接邮箱服务器
发送邮件
关闭连接 def 内存报警邮件()
#发送邮件提醒
连接邮箱服务器
发送邮件
关闭连接 while True: if cpu利用率 > 90%:
CPU报警邮件() if 硬盘使用空间 > 90%:
硬盘报警邮件() if 内存占用 > 80%:
内存报警邮件() 无参数实现

函数的有三中不同的参数:

  • 普通参数
  • 默认参数
  • 动态参数
# ######### 定义函数 ######### 

# name 叫做函数func的形式参数,简称:形参
def func(name):
print name # ######### 执行函数 #########
# 'wupeiqi' 叫做函数func的实际参数,简称:实参
func('wupeiqi')
def func(name, age = 18):

    print "%s:%s" %(name,age)

# 指定参数
func('wupeiqi', 19)
# 使用默认参数
func('alex') 注:默认参数需要放在参数列表最后
def func(*args):

    print args

# 执行方式一
func(11,33,4,4454,5) # 执行方式二
li = [11,2,2,3,3,4,54]
func(*li)
def func(**kwargs):

    print args

# 执行方式一
func(name='wupeiqi',age=18) # 执行方式二
li = {'name':'wupeiqi', age:18, 'gender':'male'}
func(**li)
def func(*args, **kwargs):

    print args
print kwargs

扩展:发送邮件实例

import smtplib
from email.mime.text import MIMEText
from email.utils import formataddr msg = MIMEText('邮件内容', 'plain', 'utf-8')
msg['From'] = formataddr(["武沛齐",'wptawy@126.com'])
msg['To'] = formataddr(["走人",'424662508@qq.com'])
msg['Subject'] = "主题" server = smtplib.SMTP("smtp.126.com", 25)
server.login("wptawy@126.com", "邮箱密码")
server.sendmail('wptawy@126.com', ['424662508@qq.com',], msg.as_string())
server.quit()

邮件模块

内置函数

学习操作:

主要了解函数的类型:

1.普通参数
2.默认参数(如果要给某个参数设置默认参数,那么默认参数必须放到列表的后面)
3.指定参数
4.动态参数(在形式参数里面前面加个*),全部放置在元组中
5.动态参数2(双**)
6.万能参数

所有的函数都应该有返回值,函数体在调用的时候才能使用

aaarticlea/png;base64,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" alt="" />

def f1():
print(123)
return "" #函数中只要执行了return 函数内的代码就不在执行!!!(函数会终止)。
print(789)
r=f1()
print(r)
def f2():
print(123) #当没有设定return的时候如果对函数进行定义一个值得时候,会返回None r=f2()
print(r)

普通参数,默认参数

def f1(dd):#dd形式参数
print(dd)
return "Ok" s1={1,2,3,4,5,6,7,8,9,}
df_s=f1(s1) #s1实际参数
print(df_s) def send(xxoo,cont,xx="Ok"): #xx在这里起到了个默认参数的作用
print(xxoo,cont,xx)
return True
send("wang","delong")
send("wang","delong","dada") #dada这在里是传值参数,可以改变默认参数 def send(xxoo,cont):
print(xxoo,cont)
return True
send(cont="delong",xxoo="wang") #不按照循序的时候可以使用指定参数,

指定参数

def send(xxoo,cont):
print(xxoo,cont)
return True
send(cont="delong",xxoo="wang") #不按照循序的时候可以使用指定参数,
动态参数(在形式参数里面前面加个*),全部放置在元组中
def f1(*chnu): #超能力,不管传什么参数都会成为元组
print(chnu,type(chnu))
f1(155,22,"wang","hhhde")
li=[155,22,"wang","hhhde"] #会把列表作为一个元素传进了函数
f1(li,"laoda")
f1(*li) #如果函数里面有*那么就有特殊的功能了(形式参数),实际是做个循环,把列表的元素循环传值

动态参数2(双**)
def f1(**chnu): #会形成字典,**形式参数为字典,只能使用指定参数,全部放置在字典中
print(chnu,type(chnu)) f1(n1="laoda")
f1(n1="laoda",n2="")
dic={"k1":"v1","k2":"v2"}
f1(kk=dic)
f1(**dic)

完成参数

 
def f1(*top,**chnu): #万能参数,记住格式,有个星的必须在前面,
#(*args,**kwargs) #标准使用,这个是潜规则,建议后期使用按照标准写
print(top,type(top))
print(chnu,type(chnu))
f1(333,"sdgwegew",k1="",k2="")

#定义一个函数
#1.def 关键字,创建函数
#2.函数名
#3.()括号
#4.函数体
#5返回值
#def send def f1():
print(123)
return "" #函数中只要执行了return 函数内的代码就不在执行!!!(函数会终止)。
print(789)
r=f1()
print(r)
def f2():
print(123) #当没有设定return的时候如果对函数进行定义一个值得时候,会返回None r=f2()
print(r) def f1(dd):#dd形式参数
print(dd)
return "Ok" s1={1,2,3,4,5,6,7,8,9,}
df_s=f1(s1) #s1实际参数
print(df_s) def send(xxoo,cont,xx="Ok"): #xx在这里起到了个默认参数的作用
print(xxoo,cont,xx)
return True
send("wang","delong")
send("wang","delong","dada") #dada这在里是传值参数,可以改变默认参数 def send(xxoo,cont):
print(xxoo,cont)
return True
send(cont="delong",xxoo="wang") #不按照循序的时候可以使用指定参数, def f1(*chnu): #超能力,不管传什么参数都会成为元组
print(chnu,type(chnu))
f1(155,22,"wang","hhhde")
li=[155,22,"wang","hhhde"] #会把列表作为一个元素传进了函数
f1(li,"laoda")
f1(*li) #如果函数里面有*那么就有特殊的功能了(形式参数),实际是做个循环,把列表的元素循环传值 def f1(**chnu): #会形成字典,**形式参数为字典,只能使用指定参数,全部放置在字典中
print(chnu,type(chnu)) f1(n1="laoda")
f1(n1="laoda",n2="")
dic={"k1":"v1","k2":"v2"}
f1(kk=dic)
f1(**dic) def f1(*top,**chnu): #万能参数,记住格式,有个星的必须在前面,
#(*args,**kwargs) #标准使用,这个是潜规则,建议后期使用按照标准写
print(top,type(top))
print(chnu,type(chnu))
f1(333,"sdgwegew",k1="",k2="") 以上就是函数的函数的传值
#1.普通参数
#2.默认参数(如果要给莫个参数设置默认参数,那么默认参数必须放到列表的后面)
#3.指定参数
#4.动态参数(在形式参数里面前面加个*),全部放置在元组中
#5.动态参数2(双**)
#6.万能参数
str.format("ddd") #格式化输出
s="我的名字:{0},年龄:{1}".format("wangdelong",30) #格式化传值
print(s)
s="我的名字:{0},年龄:{1}".format(*["wangdelong",30]) #格式化传值,使用列表传值
print(s)
s="我的名字:{name},年龄:{age}".format(age=30,name="wangdelong") #字典传值
print(s)
dic={"name":"wangdelong","age":30}
s="我的名字:{name},年龄:{age}".format(**dic) #利用字典传值
print(s)
s="我的名字:{0},年龄:{1}".format("wangdelong",30) #格式化传值
print(s)
s="我的名字:{0},年龄:{1}".format(*["wangdelong",30]) #格式化传值,使用列表传值
print(s)
s="我的名字:{name},年龄:{age}".format(age=30,name="wangdelong") #字典传值
print(s)
dic={"name":"wangdelong","age":30}
s="我的名字:{name},年龄:{age}".format(**dic) #利用字典传值
print(s)
'''
'''
def f1(a1):
a1.append(999) li=["sang"]
f1(li)
print(li) #传递的是个引用

global
#全局变量,所有的作用域都能用(可以读)
#对全局变量,重新赋值,需要使用global
#如果定义的变量是个列表(特殊的变量列表字典等),是可以修改不可以重新赋值
#在这说一个潜规则,所有的全局变量要全部都是大写,有利于代码规范。
name="wangdleong"
def f1():
age=18
print(age,name)
def f2():
age = 20
print(age, name)
f1()
f2()
def f3():
age=18
global name #表示name是全局的变量,在函数内使用了global 重新给name定义为全局变量
name="liudahui"
print(age,name)
def f4():
age = 20
print(age, name)
f3()
f4()
三元运算,三目运算,是对if的简写

# 三元运算,三目运算,是对if的简写
if 1 == 1:
name = "Wang"
else:
name = "SB"
print(name)
name = "wang" if 1 == 1 else "SB" # 三元运算,就一句话完成了多个判断
print(name) def f1(a1):
return a1 + 100 f2 = lambda a1: a1 + 100 # lambda 是和上面的操作相同的,对于简单的函数来说,可以使用lambda 表达试来做 ret = f1(10)
print(ret)
ret = f2(100)
print(ret)

内置函数:

n = abs(-1)
print(n) # all() 接收有个可以被循环的对象,如果里面的内容都为真时候bool值就为真,如果有一个为假的时候bool值就为假
# any() 只要有真,就为真,于all() 相反 n = all(["wang","delong"])
print(n)
n1 = all([1,2,3,4,5,6,7,8,9,10])
print(n1)
n2 = all(["wang","delong",0])
print(n2)
n3 = all([1,2,3,4,5,6,7,8,9,10,0])
print(n3)
n4 = any([[],1])
print(n4)
n5 = any([0,0,0,0])
print(n5)
n6 = any([0,0,0,0,1])
print(n6)
# ascii() 自动执行对象的 _repr_方式
# bin() 转换二进制
# oct() 转换八进制
# hex() 转换十六进制
print(bin(5)) # 转换二进制
print(oct(9)) # 转换八进制
print(hex(17)) # 转换十六进制
# utf-8 一个汉字:三个字节
# gbk 一个汉字:两个字节
# bytes 指定一个字符串,转换一个字节类型
#utf-8
s = "德龙" # 一个字节八位,一个汉字三个字节
n = bytes(s,encoding="utf-8") # bytes(要转换的字符串,编码方式)
print(n)
n = bytes(s,encoding="gbk")
print(n)
# str 字节转换成一个字符串
n = str(bytes(s,encoding="utf-8"),encoding="utf-8")
print(n)
# open() 打开一个文件

f = open("userdb","r") # 只读
f = open("userdb","w") # 只写写之前会清空文件
f = open("userdb","a") # 追加
f = open("userdb","x") # 如果文件存在报错,不存在创建并写入
f = open("userdb","r+") # 可以读可以写
f = open("userdb","w+") # 可以读可以写
f = open("userdb","a+") # 可以读可以写
# 操作文件,通过源码查看功能

 f.read()  # 无参数,读全部;有参数,b,按照字节,无b按照字符
f.tell() # 获取当前指针位置,按照字节查找
f.seek(1) # 指针跳转到指定的位置
f.write() # 数据,有b,按照字节写入,无b,按照字符写入
f.flush() # 强刷写入文件
f.fileno # 文件描述符,后期会用到
f.readable # 判断文件是否可读,可读返回True,否则返回False
f.readline() # 按照行一行一行的读取
f.truncate() # 根据指针位置进行截断,按照的字节位置,后面的内容会全部清空
for 循环文件对象 f = open("ddd" ,"r")
# 关闭文件

f.close()
with open("userdb") as f:# 开启加关闭
pass
f = open("userdb","r") # 加b就转换成了字节类型
date = f.read() # 按照行的方式打开
print(date,type(date))
f.close() # TODO 你好
f = open("userdb","r",encoding="utf-8") # 依照莫个字符集开启文件
date = f.read()
print(date,type(date))
f.close() f = open("userdb","rb",encoding="utf-8") #按照字节打开
date = f.read()
print(date,type(date))
f.close() f = open("userdb","ab") #按照字节打开,如果没有带b就按照python自己去出去里
f.write(bytes("\n王大一|123456",encoding="utf-8")) #依照字节类型写入
f.close() f = open("userdb","r+",encoding="utf-8")
date = f.read(200) # 读取指针
print(date)
f.seek(9) # 定位指针,如果是汉字的时候,按照字符集进行计算字节位置
f.write("")
f.close() f = open("userdb","r+",encoding="utf-8") # 没有加b按照字符读取
date = f.read()
print(date)
print(f.tell()) # 定位前三个字符的字节位置(按照字节读取的),调整指针位置
f.seek(f.tell()) # 定位指针,永远按照字节的位置找位置,按照当前位置向后覆盖
f.write("AAA") # 按照上面的位置向后覆盖
f.close()
f = open("userdb","a",encoding="utf-8")
f.write("")
f.flush() # 强制刷新到文件,不执行完成可以强制写入
input("请输入:")
f.close()
f = open("userdb","a")
print(f.readable()) # 判断文件是否可读,可读返回True,否则返回False f = open("userdb", "r", encoding="utf-8")
data = f.readline() # 按照行一行一行的读取
print(data)
data = f.readline()
print(data)
f.close()
f = open("userdb", "r+", encoding="utf-8")
f.seek(9)
f.truncate() # 根据指针位置进行截断,按照的字节位置,后面的内容会全部清空。
f.close() f = open("userdb", "r+", encoding="utf-8") for line in f:
print(line)
f.close() with函数 with open("userdb","r+") as f:
pass
with open("userdb","r+") as f1,open("userdb","a+") as f2:
pass
with open("userdb","r+",encoding="utf-8") as f1,open("userdb1","w",encoding="utf-8") as f2:
for line in f1:
new_name = line.replace("王德龙","老王") # 更新一个文件的内容
f2.write(new_name)

 
 
 
 

python 函数1的更多相关文章

  1. python 函数之day3

    一 函数的语法及特性 什么是函数? 定义:函数是一个功能通过一组语句的集合,由名字(函数名)将其封装起来的代码块,要想执行这个函数,只要调用其函数名即可. 特性: 减少重复代码 使程序变的可扩展 使程 ...

  2. Python函数作用域的查找顺序

    函数作用域的LEGB顺序 1.什么是LEGB? L:local 函数内部作用域 E:enclosing 函数内部与内嵌函数之间 G:global 全局作用域 B:build-in 内置作用域 2.它们 ...

  3. Python函数讲解

    Python函数

  4. Python函数信息

    Python函数func的信息可以通过func.func_*和func.func_code来获取 一.先看看它们的应用吧: 1.获取原函数名称: 1 >>> def yes():pa ...

  5. Python函数参数默认值的陷阱和原理深究"

    本文将介绍使用mutable对象作为Python函数参数默认值潜在的危害,以及其实现原理和设计目的 本博客已经迁移至: http://cenalulu.github.io/ 本篇博文已经迁移,阅读全文 ...

  6. Python开发【第四章】:Python函数剖析

    一.Python函数剖析 1.函数的调用顺序 #!/usr/bin/env python # -*- coding:utf-8 -*- #-Author-Lian #函数错误的调用方式 def fun ...

  7. Python函数解析

    对于Python的函数,我们需要记住的是: 1. 函数的默认返回值是None. 2. python是一个自上而下逐行解释并执行的语言.因此,函数的定义必须在函数被调用之前.同名的函数,后定义的会覆盖前 ...

  8. Python入门笔记(18):Python函数(1):基础部分

    一.什么是函数.方法.过程 推荐阅读:http://www.cnblogs.com/snandy/archive/2011/08/29/2153871.html 一般程序设计语言包含两种基本的抽象:过 ...

  9. Python函数1

    Python 函数命令的使用 想想我们之前数学中学到的函数,首先我们需要定义一个函数,例如f(x)=x, 当x输入任意数的时候,f(x)都能输出和x相等的数值. 那么在Python中是如何实现的呢? ...

  10. python函数传参是传值还是传引用?

    首先还是应该科普下函数参数传递机制,传值和传引用是什么意思? 函数参数传递机制问题在本质上是调用函数(过程)和被调用函数(过程)在调用发生时进行通信的方法问题.基本的参数传递机制有两种:值传递和引用传 ...

随机推荐

  1. jetbrains

    于最新jetbrains发布了IntelliJ IDEA 15. PyCharm 5.PhpStorm10.WebStorm 11等各个版本,但是改变了注册方法.原先的注册码包括注册机都已经不能使用了 ...

  2. 启用PowerShell Web Access

    Windows PowerShell Web Access(PSWA)是 Windows Server 2012 中的新功能,充当 Windows PowerShell 网关,允许远程计算机基于 We ...

  3. python版的短信轰炸机smsbomb----------下篇(get)

    在上一篇介绍的是post方式发送数据,可是有点站点是get方式发送数据,比如:http://www.oupeng.com/download,事实上方法差点儿相同. import httplib,url ...

  4. Java 加密 MD5

    版权声明:本文为博主原创文章,未经博主允许不得转载. [md5] md5是一种哈希算法,哈希算法是啥? ... 特点是不能解密. [代码] package com.uikoo9.util.encryp ...

  5. 常用工具之zabbix

    简介 zabbix(音同 zæbix)是一个基于WEB界面的提供分布式系统监视以及网 络监视功能的企业级的开源解决方案. zabbix能监视各种网络参数,保证服务器系统的安全运营:并提供灵活的通知机制 ...

  6. [转]VS2010 (C#)winform程序打包发布图解

    1.新建一个Windows窗体应用程序,例如项目名为monitor,功能略.新建的时候不要忘了创建解决方案. 2.在monitor解决方案上“右击”—— “添加”——“新建项目”,选择“其他类型项目” ...

  7. Android主题切换方案总结

    所谓的主题切换,就是能够根据不同的设定,呈现不同风格的界面给用户,也就是所谓的换肤. 1.将主题包(图片与配置)存到SD卡上(可通过下载或手动放入指定目录),在代码里强制从本地文件创建图片与配置文字大 ...

  8. java.sql.SQLException: Before start of result set

    在使用JDBC查询数据库报了这么一个错误 CREATE TABLE `d_user` ( `id` int(10) NOT NULL, `name` varchar(10) DEFAULT NULL, ...

  9. 第十一篇:web之Django之Form组件

    Django之Form组件   Django之Form组件 本节内容 基本使用 form中字段和插件 自定义验证规则 动态加载数据到form中 1. 基本使用 django中的Form组件有以下几个功 ...

  10. 转载-优秀程序员的十个tips

    理解技术债务 技术债务就像信用卡一样,会有很高的利息,时间越长,修复所化的代价就越大.团队应该培养一种保证设计质量的文化,鼓励重构.同时应当鼓励其它有关代码质量的实践. 保持对原理的好奇心 做Andr ...