008-python之函数

函数

一、函数的定义

函数就是对实现某一个特定功能的代码的封装;以后不用再重复写同一功能的代码,直接代用函数就行

二、函数的分类

从定义的角度将函数分为自定义函数和系统函数

  • 自定义函数:程序员自己定义的函数
  • 系统函数:系统已经定义好的函数(python本身就定义了的函数),程序员可以直接调用。例如:print函数、input函数、type函数、sum函数、max函数等。
三、定义函数
# 语法
def 函数名(形参列表):
    函数说明文档
    函数体

语法说明:

1 def     -   关键字 固定语法
2 函数名   -   有程序员自己命名;
			  两个要求(标识符,不是关键字)
			  三个规范(见名知意;所有字母小写,多个单词用下划线隔开;不使用系统的的函数名,类名和模块)
3 ():       -  固定写法
4 形参列表   -'变量1,变量2,变量3,...'的形式存在,每一个变量就是一个形参
			   形参的作用:将函数外部的数据传递到函数里面
	  		   确定形参的方法:看实现函数的功能需不需要额外的数据,需要多少个 
5 函数说明文档    -   多行注释
6 函数体         -   结构上 和def保持一个缩进的语句;逻辑上 函数体就是实现函数功能的代码
四、函数的调用
# 语法
函数名(实参列表)

语法说明:

1 函数名   -   函数名必须是已经定义过的函数的函数名;需要哪个函数对应的功能,就调用哪个函数
2 ()  	  -   固定写法
3 实参列表  -'数据1,数据2,数据3,...'的形式存在,这儿的每个数据就是一个实参
                实参是用来给形参赋值的,实参与形参一一对应
函数调用:定义函数不会执行函数体,调用函数的时候才会执行函数体

函数调用的过程

  1. 回到函数定义的位置
  2. 传参 实参给形参赋值,传参的时候必须保证每个形参都有值
  3. 执行函数体
  4. 确定函数返回结果
  5. 回到函数调用的位置,往后执行
五、函数的参数
1、位置参数和关键字参数

根据实参的提供方式将实参分为位置参数和关键字参数

  • 位置参数:以’实参1,实参2,实参3,…'的形式存在,让实参和形参从位置上一一对应
  • 关键字参数:以’形参1=实参1,形参2=实参2,…'的形式存在将实参和形参一一对应

注意:位置参数和关键字参数可以一起用,但是位置参数必须在关键字参数前面

def fun1(x,y,z):
    print('x:',x,'y:',y,'z:',z)
fun1(1,2,3) # x: 1 y: 2 z: 3
fun1(x=1,z=3,y=2) # x: 1 y: 2 z: 3
fun1(1,z=3,y=2) # x: 1 y: 2 z: 3
2、参数默认值
  • 定义函数的时候可以通过’形参名=数据’的方式给形参赋默认值

  • 在调用函数的时候,有默认值的参数可以不用传参

注意:在定义函数的时候可以选择性的给默认值,有默认值的形参必须写在形参列表的最后

​ 想要给 有默认值的参数 后面的参数传参,必须使用关键字参数传参

def fun2(x=10,y=20,z=30):
    print('x:',x,'y:',y,'z:',z)
fun2() # x: 10 y: 20 z: 30
fun2(100) # x: 100 y: 20 z: 30
3、类型说明

提示函数调用者这个函数时什么类型的,调用什么值

  • 没有默认值参数的类型说明:直接在形参后面加’:类型名’

  • 有默认值的参数,默认值对应的数据类型就是形参的类型

  • 返回值类型说明 ‘->类型名’ 写在在括号和冒号之间

def fun3(x:str)->str:
    print(x)
fun3('s1a.434wed52adsf234')
print()
4、*对应的不定长参数
4.1 参数个数的不确定

定义函数的时候,如果在某一个形参前面加*,那么这个参数就会变成一个不定长参数,可以接收多个形参
*的不定长参数的本质是一个元组,它接收到的所有的实参是这个元组中的元素
如果不定长参数后面还有参数,那么后面的参数只能是关键字参数传参

4.2定义函数的时候单独使用*

强迫在调用函数的时候,*后面的所有参数只能用关键字参数传参
注意:函数定义的时候出现*,只要是*后面的形参都只能用关键字参数传参

def sumN(num1,num2,*num):
    sum1=num1+num2
    # sum1=sum(num)
    for i in num:
        sum1+=i
    print(sum1)
sumN(1,1) # 2
sumN(1,2,3) # 6

def get_stu_info(name,age,*awards):
    print(name,age,*awards)
get_stu_info('lili',19,'三好学生','优秀干部')
def fun4(x,*,y,z):
    pass
# fun4(1,2,3) # 错误
fun4(1,y=2,z=3) # 正确
def fun5(x,*y,z,k):
    pass
fun5(1,3,2,5,z=6,k=0) # 正确
六、函数返回值

函数返回值—函数声明的时候return后面的值就是函数的返回值;如果没有return,函数的返回值就是None

返回值的作用: 将函数里面的数据传递到函数外面

获取函数返回值:获取函数调用表达式的值–就是获取函数返回值;函数返回值能做的事情,函数调用表达式也能做。

什么时候用返回值:如果函数产生了新的数据,就将新数据作为函数的返回值、

一个函数只有一个返回值,一个函数只有一个return有效,如果需要返回多个数据,直接在return后面写多个数据

return除了可以返回数据,还会提前结束函数,return后面的语句都将不会执行。

def fun(x,y):
	return x+y
print(fun(1,9)) # 10
def fun(x,y):
	return x,y
result=fun(1,9)
print(result) # (1, 9)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

兮知

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值