函数
函数就是对实现某一特定功能的代码段的封装
分类
自定义函数(程序员自己声明实现)
内置函数(系统已经声明实现完成)
1.声明函数的语法
def 函数名(参数列表):
函数体
说明:
a.def --> python中声明函数的关键字
b.函数名 --> 标识符,不能是关键字。遵守PEP8命名规范(所有字母小写,多个单词之间使用下划线隔开)见名知义(看见函数名字知道函数的功能)
c.() --> 固定格式
d.参数列表 --> 形参列表,参数名1,参数名2,...
可以多个也可以没有
参数是用来从函数的外部给函数里面传值用的
e. : -->固定格式
f.函数体 --> 就是实现函数功能的代码段
函数的调用
声明函数的时候,不会执行的函数体。函数只有在函数调用的时候才会执行
语法:
函数名(实参列表)
说明:
函数名 --> 必须已经是声明过的函数
() --> 固定的
实参列表 --> 数据1,数据2.....(用来给形参赋值)
1.格式
函数名(实参列表)
2.函数的调用过程(重点!!)
第一步:回到函数声明的位置
第二步:用实参给形参赋值
第三步:执行函数体
第四步:返回返回值 --> 返回给函数调用表达式
第五步:回到函数调用的位置,接着执行后面的代码
位置参数和关键字参数
位置参数:按照实参的顺序一一个形参赋值
def func1(a,b,c):
print('a:',a,'b:',b,'c:',c)
func1(10,20,30)
#a: 10 b: 20 c: 30
关键字参数:形参1=值1,形参2 = 值2...
def func1(a,b,c):
print('a:',a,'b:',b,'c:',c)
func1(c = 30,a = 10,b = 20)
#a: 10 b: 20 c: 30
函数声明的时候可以给参数设置默认值,但是,有默认值的参数,(必须放在参数列表的最后)
有默认值的参数,在调用的时候可以不用传参
def func1(a,c,b=0):
print('a:',a,'b:',b,'c:',c)
func1(c = 30,a = 10)
#a: 10 b: 0 c: 30
不定长参数 ---> *
参数的个数不确定的时候,可以在形参的前面加*,将这个形参变成一个元祖,用来接收多个参数
可以传多个参数,也可以不传参数
注意如果函数有多个参数,那么不定长参数放在最后
def sum5(*nums):
print(nums)
sum5(1,2,3)
#(1, 2, 3)
def sum6(a,b,*c):
print(c,b,a)
sum6(1,'b',1,2,3,4)
#(1, 2, 3, 4) b 1
def sum1(*num):
print(sum(num))
sum1(88,22)
#110
# 求多个数的和以及平均值
def yt_sum(*nums):
sum1 = sum(nums)
average = sum1 / len(nums)
return sum1, average # 同时返回和、平均值
a, b = yt_sum(2, 45, 67, 90, 0)
num = yt_sum(34, 56, 67, 34, 56)
print(a, b) #204 40.8
print(num[0], num[1]) #247 49.4
函数的返回值
就是函数调用表达式的值,就是return关键字后面的表达式的值
python中所有的函数都有返回值,返回值默认是None()
执行函数体没有遇到return,函数的返回值就是None;遇到return函数返回值是return后面的值
函数调用表达式 --> 调用函数的语句(函数名(实参))
return --> 关键字,只能写在函数体中。用来返回返回值和结束函数
注意:看一个函数的返回值,只看有没有遇到return。只要没有遇到return,就返回None.遇到return就返回return后面的返回值。
情况一:没有return
def shiyan():
print('yeyuhhh') #yeyuhhh
# 将返回值赋给一个变量
a = shiyan() # None (没有遇到return,返回值就是None )
print(a)#yeyuhhh (相当于在调用函数 ,执行打印)
# 直接打印返回值
print(shiyan())# None (没有遇到return,返回值就是None )
情况二:有return
执行函数的时候,一旦遇到return,函数就直接结束,并且把return后面的结果作为返回值
注意:并不是只要函数中有return 就返回return后面的值
def func(n):
if n % 2: #(能被4整除就是True,循环执行就结束,不会遇到return)
return '是奇数'
func(4) #None