当前位置:首页>python>小白学python第51天之函数的参数进阶

小白学python第51天之函数的参数进阶

  • 2026-08-25 20:45:46
小白学python第51天之函数的参数进阶

1.27

函数的参数进阶

?

学前疑问

函数的参数是可以多个的, 那大家有没有想过,我们调用函数的时候,参数顺序是不是不能变的?如果要变化位置,要怎么操作?

1

函数的参数进阶

(1)函数的参数

在函数定义与调用时,我们可以根据自己的需求来实现参数的传递。在Python中,函数的参数一共有两种形式:① 形参 ② 实参

形参:在函数定义时,所编写的参数就称之为形式参数

实参:在函数调用时,所传递的参数就称之为实际参数

def greet(name):  # name就是在函数greet定义时,所编写的参数(形参)    return name + ',您好'# 调用函数name = '老王'greet(name)  # 在函数调用时,所传递的参数就是实际参数

注意:虽然我们在函数传递时,喜欢使用相同的名称作为参数名称。但是两者的作用范围是不同的。name = '老王',代表实参。其是一个全局变量,而greet(name)函数中的name实际是在函数定义时才声明的变量,所以其实一个局部变量。

(2)函数的参数类型

a、位置参数

理论上,在函数定义时,我们可以为其定义多个参数。但是在函数调用时,我们也应该传递多个参数,正常情况,其要一一对应。

def user_info(name, age, address):    print(f'我的名字{name},今年{age}岁了,家里住在{address}')# 调用函数user_info('Tom', 23, '美国纽约')

注意事项:位置参数强调的是参数传递的位置必须一一对应,不能颠倒。

b、关键词参数(Python特有)

函数调用,通过“键=值”形式加以指定。可以让函数更加清晰、容易使用,同时也清除了参数的顺序需求。

def user_info(name, age, address):    print(f'我的名字{name},今年{age}岁了,家里住在{address}')# 调用函数(使用关键词参数)user_info(name='Tom', age=23, address='美国纽约')

(3)函数定义时缺省参数(参数默认值)

缺省参数也叫默认参数,用于定义函数,为参数提供默认值,调用函数时可不传该默认参数的值(注意:所有位置参数必须出现在默认参数前,包括函数定义和调用)。

def user_info(name, age, gender='男'):    print(f'我的名字{name},今年{age}岁了,我的性别为{gender}')user_info('李林', 25)user_info('振华', 28)user_info('婉儿', 18, '女')

谨记:我们在定义缺省参数时,一定要把其写在参数列表的最后侧。

(4)不定长参数

不定长参数也叫可变参数。用于不确定调用的时候会传递多少个参数(不传参也可以)的场景。此时,可用包裹(packing)位置参数,或者包裹关键字参数,来进行参数传递,会显得非常方便。

a、包裹(packing)位置参数

def user_info(*args):    print(args)  # 元组类型数据,对传递参数有顺序要求    # print(f'我的名字{args[0]},今年{args[1]}岁了,住在{args[2]}')# 调用函数,传递参数user_info('Tom', 23, '美国纽约')

注意:传进的所有参数都会被args变量收集,它会根据传进参数的位置合并为一个元组(tuple),args是元组类型,这就是包裹位置传递。

b、包裹关键字参数

def user_info(**kwargs):    # print(kwargs)  # 字典类型数据,对传递参数没有顺序要求,格式要求key = value值    print(f'我的名字{kwargs["name"]},今年{kwargs["age"]}岁了,住在{kwargs["address"]}')# 调用函数,传递参数user_info(name='Tom', address='美国纽约', age=23)

综上:无论是包裹位置传递还是包裹关键字传递,都是一个组包的过程。

Python组包:就是把多个数据组成元组或者字典的过程。

今日学习完毕,课后作业:

已知函数为:

def greet(name, greeting="Hello", punctuation="!"):    """    一个简单的问候函数,演示不同类型的参数    参数:        name: 位置参数(必需)        greeting: 默认参数,默认为"Hello"        punctuation: 默认参数,默认为"!"    """    message = f"{greeting}, {name}{punctuation}"    print(message)

调用函数,需要输入以下内容:

① 输出: Hi, Alice!!

② 输出: Hey, Bob!

③ 输出: Welcome, Charlie.

④ 输出: Hello, David!

最新文章

随机文章