目录
三、Python函数基础
3.1 函数基础
3.1.1 函数概念
概念:在编写程序中,有某一功能代码出现多次,但是为了提高编写效率以为代码的重用,所以把具有独立功能的代码组织为一个小模块,这就是函数。
3.1.1.1 什么是函数
-
一系列Python语句的组合,可以在程序中运行一次或者多次,一般是完成具体独立的功能。
3.1.1.2 为什么使用函数
-
代码的复用最大化以及最小化冗余代码,整体代码结构清晰,问题局部化。
3.1.2 函数定义
# def + 关键字 + 小括号 + 冒号 + 换行缩进 + 代码块 定义一个函数 def 函数名(参数列表): 代码块
3.1.3 函数调用
函数名加()即可调用该函数
-
本质上就是执行函数定义里的代码块
-
在调用函数前,必须线定义函数
3.1.4 函数说明文档
函数内容第一行可以用字符串进行函数说明
-
定义函数写文档可以””“ “”“书写文档说明
-
调用时有函数说明
#函数定义
def xinxi(name,height,weight,hobby,pro):
"""
:param name:
:param height:
:param weight:
:param hobby:
:param pro:
:return:
"""
#代码块
print("%s的身高是%f" % (name,height))
print("%s的体重是%f" % (name,weight))
print("%s的爱好是%s" % (name,hobby))
print("%s的专业是%s" % (name,pro))
pass
#调用带参数信息
xinxi("Rany",185,155,"打篮球","计算机")
print("------------分割线--------------")
xinxi("peter",180,150,"健身","计算机")
3.2 函数参数
定义参数时,我们把参数的名字和位置确定下来,函数的接口定义就完成了。对于函数的调用者来说,只需要知道如何传递正确的参数,一级函数将返回什么样的值就够了。
-
参数其实就是函数为了实现某项特定的功能,进而为了得到实现功能所需要的数据。
3.2.1 函数的作用
Python的函数定义非常简单,但灵活度非常大,除了正常定义的必选参数外,还可以使用默认参数、可变参数和关键字参数,使得函数定义出来的接口,不但能处理复杂的参数,还可以简化调用者的代码。
3.2.2 参数的类型
3.2.2.1 缺省参数【默认参数】
-
缺省参数,在调用函数时如果没有传参数,那么会使用函数时给的缺省值。缺省参数必须在参数列表的最后面,否则会报错。
#定义函数
def sum1(a=20,b=30):
#定义函数
print("默认参数使用=%d"%(a+b))
pass
#默认参数调用
sum1() #在调用时如果未赋值,就会用定义函数时给定的默认值
3.2.2.2 不定长参数【可选参数】
一个函数有时候会处理比当初声明的参数要多,这就是不定长参数,定义函数时不用生命参数名。加了幸好(*)的变量args会存放所有未命名的变量参数,args为元组;而加**的变量kwargs会存放命名参数,即形如key=value的参数,kwargs为字典。例3.2.2.4关键字参数
#可选参数(当参数的个数不确定时使用,比较灵活)
def getComputer(*args): #可变长的参数
"""
计算累加和
:param args: 可变长的参数类型
:return:
"""
result = 0
for item in args:
result+=item
pass
print("result=%d"%result)
pass
getComputer(1,2,4,5,6)
getComputer(1,2)
3.2.2.3 必选参数
#必选参数
def sum(a,b):# a,b是形式参数,形参只是意义上的一种参数,在定义的时候是不占用内存地址的。
sum = a + b
print(sum)
pass
#函数调用 在调用的时候,必须要填的信息,就是必选参数
sum(20,15) #20,15就是实际参数,有实际意义的参数。就是占用内存地址的参数。
3.2.2.4 关键字参数
-
**来定义
-
在函数体内,参数关键字是一个字典类型,key是一个字符串
#关键字参数
def keyFunc(**kwargs):
print(kwargs)
pass
dic = {"name":"Rany","age":19}
keyFunc(**dic) #直接传递字典对象时,需要带上**才能运行
keyFunc(name="jily",age=19) #直接传递键值对
3.2.2.5 引用传参
Python中函数参数是引用传递(注意不是值传递)。对于不可变类型,因变量不能修改,所以运算不会影响到变量自身;而对于可变类型来说,函数体中的运算有可能会更改传入的参数变量。
3.2.2.6 混合参数
def fundtions(*args,**kwargs):
"""
可选参数必须放到关键字可选参数之前
:param args:
:param kwargs:
:return:
"""
print(args)
print(kwargs)
pass
fundtions(123,456,789,name="rany",age=19) #python自动分配
3.3 函数返回值
-
返回值就是程序完成后,最后返回的对象
-
关键字return。有return返回对应的值;如果没有,返回空None
-
返回类型可以是任意类型,取决于return后面的类型
-
用途是给调用方返回的数据
-
在一个函数体内可以出现多个return关键字,但只返回一个return
-
如果在一个函数体内执行了return,就意味着函数运行结束
def sun(a,b):
sun = a + b
return rany
sun(10,9)
print(rany)
3.4 函数嵌套调用
def ones():
print("-----------------分割线1-----------------")
print("-----------------分割线2-----------------")
print("-----------------分割线3-----------------")
pass
def twos():
print("-----------------分割线4-----------------")
ones()
print("-----------------分割线5-----------------")
print("-----------------分割线6-----------------")
twos()
3.5 函数分类
-
函数的分类:根据函数的返回值和函数的参数
-
有参数无返回值
-
有参数有返回值
-
无参数有返回值
-
无参数无返回值
-