Python基础知识-09-函数,python其他知识目录
SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。
1、函数介绍
函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。
函数能提高应用的模块性,和代码的重复利用率。你已经知道Python提供了许多内建函数,比如print()
。但你也可以自己创建函数,这被叫做用户自定义函数。
def 函数名(参数列表):
函数体
函数名(参数)
函数名(参数)
2、函数使用优缺点:
公司随随便便几百上千行。可读性,重用性,函数,面向过程编程
优点:
缺点:
面向过程,可以将可重复性的代码做成一个函数,用参数代替变化的量,实现具有重复性操作的功能。
当事物需要做这个操作的时候,调用函数即可实现功能。#自己理解
#发邮件:设置里面开启pop3,smtp服务器 ,往smtp服务器发邮件
比如发邮件,很多对象都使用的一个动作,写成函数,调用函数。避免代码冗余。
什么情况写函数,就是为了能重复使用某个功能,就写成函数,一个功能一个函数。或者是为了方便阅读,增加代码可读性
函数式编程是做什么的?避免重复性代码。代码拆分,增强可移植性,可读性
本质:将N行代码拿到别处并给他起个名字,以后通过名字就可以找到这段代码并执行。
场景:代码重复执行。
代码量特别多超过一屏,可以选择通过函数进行代码的分割。
3、函数定义:
你可以定义一个由自己想要功能的函数,以下是简单的规则:
函数代码块以 def 关键词开头,后接函数标识符名称和圆括号 ()。
任何传入参数和自变量必须放在圆括号中间,圆括号之间可以用于定义参数。
函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。
函数内容以冒号起始,并且缩进。
return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None
。
语法:
Python 定义函数使用 def 关键字,一般格式如下:
def 函数名(参数列表):
函数体
默认情况下,参数值和参数名称是按函数声明中定义的顺序匹配起来的。
函数执行: def xiaoma(): print("魔降风云变") xiaoma() ---------结果: 魔降风云变
4、函数调用
定义一个函数:给了函数一个名称,指定了函数里包含的参数,和代码块结构。
这个函数的基本结构完成以后,你可以通过另一个函数调用执行,也可以直接从 Python 命令提示符执
行。
函数不调用,内部代码不执行。调用后用不用变量接收返回值,函数都会执行。
def xiaoma(): print("魔降风云变") xiaoma() ---------结果: 魔降风云变 def xiaoma(): print("魔降风云变") a=xiaoma() ----------结果: 魔降风云变
def xiaoma():
print("魔降风云变")
def mcw(): #函数调用函数
print("我是:")
xiaoma()
mcw()
--------------结果:
我是:
魔降风云变
5、函数传参
不同的对象做相同的操作,可以定义函数。如果每个对象还有些区别,那么有区别的地方使用函数传参
。
定义带参数的函数的时候
函数式编程。通过传参,返回不同的值,返回不同的参数。同一个功能不同的地方就使用传参
形式参数(形参):形参就是形式上的参数,可以理解为数学的X,没有实际的值,通过别人赋值后才有
意义。相当于变量。
实际参数(实参):实参就是实际意义上的参数,是一个实际存在的参数,可以是字符串或是数字等
函数里面使用字符串格式化
函数可以定死了,也可以传递变量。写函数不一定需要参数。如果有变的,使用参数,没有变的就定死
了就可以,看实际情况了。
def eat(arg1,arg2):
print("%s喜欢吃%s"%(arg1,arg2))
eat("小马过河","米饭")
eat("小明","面条")
-----------结果:
小马过河喜欢吃米饭
小明喜欢吃面条
5.1没有函数传参 案例1: 使用函数只计算某一个列表内元素的和: def list_sum(): li = [1, 2, 3] sum=0 for i in li: sum+=i print(sum) list_sum() -----------结果 6 5.2一个函数传参: 案例2: 使用函数计算指定列表内元素的和: def list_sum(li): sum=0 for i in li: sum+=i print(sum) info=[1,2,3] list_sum(info) -------------结果: 6 报错问题1: 报错:函数没有形参,调用函数时带着参数的报错: def list_sum(): sum=0 for i in li: sum+=i print(sum) info=[1,2,3] list_sum(info) #调用时,可以直接做参数,也可以用变量做实参 -------------------结果: list_sum(info) TypeError: list_sum() takes 0 positional arguments but 1 was given 5.3多个函数传参: def xiaoma(arg1,arg2): print(arg1+arg2) xiaoma(2,3) -----------结果: 5 报错问题2:传参传少了 def xiaoma(arg1,arg2): print(arg1+arg2) xiaoma(2) -----------结果: xiaoma(2) TypeError: xiaoma() missing 1 required positional argument: 'arg2' 报错问题3:传参传多了 def xiaoma(arg1,arg2): print(arg1+arg2) xiaoma(2,3,4) ------------结果: xiaoma(2,3,4) TypeError: xiaoma() takes 2 positional arguments but 3 were given
函数:增加代码重用性,可读性。
比如去楼下拿快递,是个函数,告诉他拿**的快递,他就拿到**的快递
6、函数返回值return
1) print 和 return 的区别,print 仅仅是打印在控制台,而 return 则是将 return 后面的部分作
为返回值作为函数的输出,可以用变量接走,继续使用该返回值做其它事。
2)函数需要先定义后调用,函数体中 return 语句的结果就是返回值。如果一个函数没有 reutrn 语句
,其实它有一个隐含的 return 语句,返回值是 None,类型也是 'NoneType'。
3)return作用:结束函数调用、返回值
4)终止函数的方法:满足某个条件 return False
成功与不成功返回一个结果。如果不需要打印,用户只需要某个结果,那么让函数返回一个值,让用户
根据返回值做对应的操作。return实现函数返回值。
调用函数,并用变量接收函数的返回值。
6.1使用变量接收返回值:
def xiaoma(): a=1 return a mcw=xiaoma() print(mcw) ------------结果 1
6.2用户根据函数返回值做别的操作。(根据返回值进行通信)
#当小明吃完饭,给我返回1。小明吃完后小马过河找他玩
def xiaoming(arg): a=0 if arg=="吃完": a=1 return a status=xiaoming("吃完") if status==1: print("小马过河去找小明玩") --------------结果: 小马过河去找小明玩
6.3返回多个值的方法:
如果程序需要有多个返回值,则既可将多个值包装成列表之后返回,也可直接返回多个值。如果 Python
函数直接返回多个值,Python 会自动将多个返回值封装成元组。多个值用逗号隔开。
1)python 函数使用 return 语句返回 "返回值",可以将其赋给其它变量作其它的用处
2)所有函数都有返回值,如果没有 return 语句,会隐式地调用 return None 作为返回值
3)一个函数可以存在多条 return 语句,但只有一条可以被执行,如果没有一条 reutrn 语句被执行,同样会隐式调用 return None 作为返回值
4)如果有必要,可以显式调用 return None 明确返回一个None(空值对象)作为返回值,可以简写为 return
5)如果函数执行了 return 语句,函数会立刻返回,结束调用,return 之后的其它语句都不会被执行了
def list_sum(li): sum=0 e_str="" for i in li: e_str+=str(i) sum+=i return sum,e_str li=[1,2,3] mcw=list_sum(li) # 获取list_sum函数返回的多个值,多个返回值被封装成元组 v1,v2=list_sum(li) #此外,也可使用 Python 提供的序列解包功能,直接使用多个变量接收函数返回的多个值。 print(mcw) print(v1,v2) ---------------结果: (6, '123') 6 123
6.4return终止循环
def mcw(): #没有return的时候,返回值默认是None,循环正常结束。 for i in range(1,4): print(i) m=mcw() print(m) -------------结果: 1 2 3 None def mcw(): #有return的时候,返回指定的值,并终止函数向后继续执行了。 for i in range(1,4): if i==3: return "终止函数了" print(i) m=mcw() print(m) -------------结果: 1 2 终止函数了
6.5、直接打印返回值
def mcw(): return "魔降风云变" print(mcw())
6.6 for .. else .. 语句 (意外终止情况)
# 表示如果 for 语句段的内容正常循环结果才会执行 else 段的语句,如果 for 在循环过程中时被 break 或者 return 语句意外终止循环,就不会执行 else 段中的语句。
7、Python内置函数的了解
Python 解释器内置了很多函数和类型,您可以在任何时候使用它们。以下按字母表顺序列出它们。
参考:https://docs.python.org/zh-cn/3/library/functions.html
8、上述总结
没传参的函数,有传参的函数,没返回值的函数,有返回值的函数。既有传参又有返回值的函数。需要
什么样的根据具体需求。
#自我总结
参考链接:
http://www.runoob.com/python3/python3-function.html
https://www.cnblogs.com/i-honey/p/7679897.html
http://c.biancheng.net/view/2248.html
参考续集
http://c.biancheng.net/view/2247.html
