Python教程:函数的位置参数、默认参数、动态参数、关键字参数(入门必看)

1.形式参数(Formal Parameters)和实际参数(Actual Parameters)是函数或方法定义和调用过程中的两个重要概念。举个例子,在下面的greet函数中,当我们调用greet(“李白”)时,"李白"就是实际参数,name是一个形式参数。这个实际参数,被用来替换函数定义中的形式参数,以执行函数操作。

简单来说,形式参数是函数或方法定义的参数列表,用于规定接收输入的方式;实际参数是在调用函数或方法时传递的值,用于执行函数或方法的操作。

def greet(name):
    print(f'大家好,我是{name}哥哥')

# 调用函数
greet('李白')  # 输出:大家好,我是李白哥哥

2.位置参数(Positional Arguments):位置参数是按照函数定义时的顺序传递的参数。在调用函数时,必须按照定义时的顺序传递参数。位置参数是函数的基础,通常用于定义函数的主体逻辑。这里还说明参数的个数传参的时候要相同,比如下面的greet函数有两个参数,传参的时候也要传两个,实参和形参数量保持一致,且第一个参数是name,第二个参数是age,顺序不能错乱,参数的类型也要一致,不然解释器容易报错。

def greet(name, age):
    print(f'大家好,我是{name}哥哥,今年{age}岁')

# 调用函数时,必须按照定义时的顺序传递参数
greet('李白', 18)  # 输出:大家好,我是李白哥哥,今年18岁

# 传参顺序不一样的输出
greet(18, '李白')  # 大家好,我是18哥哥,今年李白岁

**3.默认参数(Default Arguments):**默认参数是在函数定义时为参数设置一个默认值。如果在调用函数时没有提供该参数的值,那么将使用默认值。默认参数可以减少函数调用的复杂性,同时提供一种灵活的方式来处理未提供的参数值。下面的name=‘李白’, age=18就是两个默认参数。

def greet(name='李白', age=18):
    print(f'大家好,我是{name}哥哥,今年{age}岁')

# 1.调用函数时,不传递任何参数,使用默认值
greet()  # 输出:大家好,我是李白哥哥,今年18岁

# 2.调用函数时,只传递一个参数,其他参数使用默认值
greet('杜甫')  # 输出:大家好,我是杜甫哥哥,今年18岁
# 3.查询参数有默认值,返回值是一个元组
print(greet.__defaults__)   #输出 ('李白', 18)

混合参数的使用的小提醒: 当定义一个有默认值参数的函数时,有默认值的参数必须位于所有,没有默认值参数的后面。如下ab参数,放在默认参数name='李白’的前面就不会报错,反之放在后面就会有语法错误。

# 不会报错
def greet(a, b, name='李白', age=18):

# 会报错
def greet(name='李白', age=18, a, b):

4.关键字参数(Keyword Arguments):关键字参数,是在调用函数时明确指定参数的名称和值。在函数定义中,可以通过为参数设置默认值来确保它们有默认值,但在调用函数时,可以使用关键字参数来明确指定要使用的值。关键字参数提供了更大的灵活性,允许在调用函数时传递特定的值,而不是使用默认值。下面例子中,func1函数有4个参数abcd,在调用func1的时候指定了关键字参数d=4,指定的实参和形参,写法上都要放在最后面,除非你把所有的参数,都传入的是关键字参数,这样可以无序传参 。func2函数错误的原因,是因为形参c,如果是关键字参数的时候,一定要放在参数的最后面位置,不然报错。所以func3是对func2错误的改写。只需要把指定的关键字参数c,放在最后面即可。即函数含有混合传参时,关键字参数必须位于所有的位置参数之后。

print('1.正确的写法'.center(30, '-'))
def func1(a, b, c, d):
    print('参数的值:', a, b, c, d)

func1(1, 2, 3, d=4)  # 参数的值:1 2 3 4
func1(c=30, a=10, b=20, d=40)  # 参数的值:10 20 30 40

print('2.错误的写法'.center(30, '-'))
def func2(a, b, c, d):
    print('参数的值:', a, b, c, d)
func2(1, 2, 4, c=3)
# 输出 TypeError: func2() got multiple values for argument 'c'

print('3.错误的改对的方法'.center(30, '-'))
def func3(a, b, d, c):
    print('参数的值:', a, b, c, d)
func3(1, 2, 4, c=3) # 参数的值:1 2 3 4

5.动态参数(Variable-length Arguments):动态参数允许函数接受可变数量的参数。在Python中,有两种动态参数类型:args和**kwargs。args用于接收任意数量的位置参数,**kwargs用于接收任意数量的关键字参数。这些动态参数可以与其他普通参数一起传递给函数,以实现更灵活的函数调用。

# 动态参数示例(*args)  
def sum_numbers(*numbers):
    total = 0
    for num in numbers:
        total += num
    return total

# 调用函数时,传递任意数量的数字参数
result = sum_numbers(1, 2, 3)
print(result)   # 输出:6
result2 = sum_numbers(1, 2, 3, 4, 5)
print(result2)   # 输出:15

**kwargs的示例用法

def print_info(**kwargs):
    print(kwargs.items())
    for key, value in kwargs.items():
        print(f"{key}: {value}")

    # 调用函数并传递参数
print_info(name="李白", age=18, city='唐')

输出内容:

dict_items([('name', '李白'), ('age', 18), ('city', '唐')])
name: 李白
age: 18
city: 唐

感兴趣的小伙伴,赠送全套Python学习资料,包含面试题、简历资料等具体看下方。

一、Python所有方向的学习路线

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照下面的知识点去找对应的学习资源,保证自己学得较为全面。

img
img

二、Python必备开发工具

工具都帮大家整理好了,安装就可直接上手!img

三、最新Python学习笔记

当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。

img

四、Python视频合集

观看全面零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

img

五、实战案例

纸上得来终觉浅,要学会跟着视频一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

img

六、面试宝典

在这里插入图片描述

在这里插入图片描述

简历模板在这里插入图片描述
若有侵权,请联系删除
  • 11
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值