函数的参数
形参和实参的介绍
函数的参数分为形式参数和实际参数,简称形参和实参
- 形参即在定义函数时,括号内声明的参数。
- 形参本质就是一个变量名,用来接收外部传来的值。
- 实参即在调用函数时,括号内传入的值
- 值可以是常量、变量、表达式或三者的组合
#形参和实参
# #定义的函数名后的(),内部的都是形参
# def add(x,y):
# return x+y
# #调用函数时,函数后面的(),内部的内容都是实参
# res=add(10,5)
# print(res)
# def add(x,y):
# return x+y
# #实参是常量
# add(10,5)
# def add(x,y):
# return x+y
# x=10
# y=5
# #实参是变量
# add(x,y)
# def add(x,y):
# return x+y
# #实参是表达式
# res=add(10*2,add(2,2))
# print(res)
位置参数
- 位置参数即按照顺序传参
- 在定义函数时,按照从左到右的顺便定义形参,则传入实参时,也要对应顺序就行传参。
# def add(name,age):
# print(f'my name is {name},my age is {age}')
#
# res=add('syh',23)
# print(res)
- 在调用函数时,按照从左到右的顺序依次定义实参,称为位置实参
- 凡是按照这种形式定义的实参会按照从左到右的顺序与形参一一对应
关键字传参
- 关键字可以不按照对应位置进行传参
#关键字传参可以不按照对应的位置传参
# def add(name,age):
# print(f'my name is {name},my age is {age}')
#
# res=add(name='syh',age=23)
位置和关键字混合使用
- 位置传参必须在前,关键字传参必须在后面,而已关键字传参不能一个实参传给多个形参。
#def add(name,age):
# print(f'my name is {name},my age is {age}')
#res=add('syh',age=23)
默认参数
- 参数中有默认值时,可以不用传值
- 参数中有默认值,仍继续传值时,会覆盖掉原有的默认值,使用新传入的值
"""默认参数"""
# 参数有默认值,可以不传值
#def add(name,age,sex='男'):
# print(f'my name is {name},my age is {age},my sex is {sex}')
#res=add('syh',age=23)
# my name is syh,my age is 23,my sex is 男
# #参数有默认值时,重复传值会覆盖掉默认值,使用新传入的值
# def add(name,age,sex='男'):
# print(f'my name is {name},my age is {age},my sex is {sex}')
#
# res=add('syh',age=23,sex='女')
- 默认参数,必须在参数之后
- 默认参数为可变数据类型时,直接在可变数据类型内添加值
- 默认参数为空时,传入参数时,对应函数中的参数为空,在函数内部会做一个判断,不传值,便为空,则参数重置为空。
"""默认参数必须在参数之后"""
# 默认参数的值仅在函数定义阶段被赋值一次
"""默认参数为可变数据类型"""
# #默认参数为可变数据类型
# def append_list(num,list=[]):
# list.append(num)
# return list
# #调用时候就是在可变数据类型列表中添加元素
# res=append_list(1)
# print(res)
#列表时可变数据类型,在上面的基础上,会对列表进行添加值
# res1=append_list(2)
# print(res1)
# # [1]
# # [1, 2]
"""默认参数为空None"""
# def append_list(num,list=None):
# if list is None :
# list=[]
# list.append(num)
# return list
# #对应的函数在参数中为空,不可变数据类型
# #在函数中做一个判断后,不传值为空,列表重置为空
# res=append_list(1)
# print(res)
# #在函数中做一个判断后,不传值为空,列表重置为空
# res1=append_list(2)
# print(res1)
# # [1]
# # [2]
标签:函数,age,list,add,参数,my,name
From: https://www.cnblogs.com/suyihang/p/17894362.html