Python函数传参
- 1.无参函数
- 2.带参函数
- 2.1实参类型
- 2.2形参类型
根据函数是否带参数,分为无参函数和带参函数。
1.无参函数
不会对一些实参(变量,常量,表达式,函数等)进行操作,无参函数没有形参,调用函数没有实参。
例:定义一个函数,函数功能:打印hello。
def print_hello():
print ('hello')
#调用函数
print_hello()
2.带参函数
当需要对一些实参(可以是变量,常量,表达式,函数等)进行一些操作时,就需要对函数定义形参和调用时传入对应的实参。
实参类型包括:位置实参,关键字实参
形参类型包括:默认参数,关键字参数
函数定义的时候括号内的参数是形参;在调用函数时,传入的括号内的参数是实参,也就是在函数内实际执行操作的参数
2.1实参类型
(1)位置实参
位置参数是函数调用中最简单的参数类型。它们按顺序依次排列,函数将按相同的顺序接收它们。位置参数是通过它们在函数定义中的相对位置来标识的。调用函数时根据函数定义的参数位置来传递参数。
def user_info(name, age, gender):
print(f'您的名字是{name},年龄是{age},性别是{gender}')
user_info('TOM', 20, '男')
在上述例子中,函数定义了三个位置参数name,age和gender,在函数调用时传递了三个实际参数"Tom",18和"男",函数将按照位置接收它们。
输出结果为:
您的名字是TOM,年龄是20,性别是男
注:传递的参数和定义的参数的顺序及个数必须一致
(2)关键字实参
关键字参数是在函数调用时使用名称传递的。使用关键字参数时,参数顺序是无关紧要的,函数调用时通过“键=值”形式传递参数
def user_info(name, age, gender):
print(f"您的名字是:{name},年龄是:{age},性别是:{gender}")
# 关键字传参
user_info(name="小明", age=20, gender="男")
# 可以不按照固定顺序
user_info(age=20, gender="男", name="小明")
# 可以和位置参数混用,位置参数必须在前,且匹配参数顺序
user_info("小明", age=20, gender="男")
在上述例子中,使用关键字参数将实参“小明”,20和"男"传递给函数,函数会根据形参的名称接收参数,因此位置顺序不是必要的。
输出结果为:
您的名字是:小明,年龄是:20,性别是:男
您的名字是:小明,年龄是:20,性别是:男
您的名字是:小明,年龄是:20,性别是:男
注:函数调用时,如果有位置参数时,位置参数必须在关键字参数的前面,但关键字参数之间不存在先后顺序
2.2形参类型
(1)默认参数
当一个函数的参数有默认值时,调用该函数时可以不传递这个参数。如果用户传递了这个参数,那么默认值将被覆盖。
def show(name, gender="男"):
print(name, gender)
show("张三")
show("李四", "女")
在上述例子中,函数有两个参数name和gender,其中gender定义了默认值"男",第一个函数调用中,只有名字参数被传递,因此gender参数默认为"男"。在第二个函数调用中,一个不同的性别参数“女”被传递,并且覆盖了默认值。
输出结果为:
张三 男
李四 女
(2)关键字参数
通过使用关键字和值来表示函数中变量可以使代码更加容易阅读和使用。
def f(x=0, y=0, z=0):
print(x, y, z)
f(y=2, x=1)
在上述例子中,函数有三个具有默认值0的参数。调用“f(y=2, x=1)”时,将设置x=1,y=2覆盖前二个参数。
输出结果为:
1 2 0