24 Python位置参数、默认参数、关键字参数

 欢迎来到@一夜看尽长安花 博客,您的点赞和收藏是我持续发文的动力

对于文章中出现的任何错误请大家批评指出,一定及时修改。有任何想要讨论的问题可联系我:3329759426@qq.com 。发布文章的风格因专栏而异,均自成体系,不足之处请大家指正。

    专栏:

文章概述:对Python位置参数、默认参数、关键字参数的介绍

关键词:Python位置参数、默认参数、关键字参数

本文目录

Python函数之默认参数与可变参数

位置参数:

默认参数:

关键字参数

可变参数:

  

Python函数之默认参数与可变参数

定义函数的时候,我们把参数的名字和位置确定下来,函数的接口定义就完成了。对于函数的调用者来说,只需要知道如何传递正确的参数,以及函数将返回什么样的值就够了,函数内部的复杂逻辑被封装起来,调用者无需了解。

Python的函数定义非常简单,但灵活度却非常大。除了正常定义的必选参数外,还可以使用默认参数、可变参数和关键字参数,使得函数定义出来的接口,不但能处理复杂的参数,还可以简化调用者的代码。

位置参数:

函数调用时,实参默认按位置顺序传递,需要个数和形参匹配。按位置传递的参数,称为:“位置参数”。

def fun1(a,b,c):
  print(a,b,c)
fun1(2,3,4)
#fun1(3,4)   #报错,位置参数不匹配

默认参数:

在Python中,可以在声明函数时,预先为参数设置一个默认值。当调用函数时,如果某个参数具有默认值,则可以不向函数传递该参数,这时,函数将使用声明函数时为该参数设置的默认值。

def mytest(name, age=18):
    print('my name is %s, my age is %d' % (name, age))
mytest('yasaka')
mytest('yasaka',19)
mytest('yasaka',age=19)

关键字参数

  • 在Python中,参数传递不仅仅可以按照声明函数时参数的顺序进行传递,还可以按照形参的名称传递参数,称为“命名参数”,也称“关键字参数”。
  • 使用按形参的名称传递参数的方式调用函数时,要在调用函数名后的圆括号里为函数的所有参数赋值,赋值的顺序可以不必按照函数声明时的参数顺序。
def fun1(a,b,c):
  print(a,b,c)


fun1(8,9,19)     #位置参数
fun1(c=10,a=20,b=30) #命名参数,参数顺序可以和声明时的顺序不一致

可变参数:

可以用来收集多余的参数

在Python中,函数可以具有任意个参数,而不必在声明函数时对所有参数进行定义。声明函数时,如果在参数名前加上一个星号“*”,则表示将多个参数收集到一个“元组”对象中;如果在参数名前加上两个星号“**”,则表示将多个参数收集到一个“字典”对象中。

*args**kwargs只是函数参数的传递机制,不是字典,用*args**kwargs来处理任意数量的位置参数和关键字参数

*args 通常是共识

def mytest(name, age, *hobby):
  print("my name is %s, my age is %d" % (name ,age))
  print(hobby, len(hobby))
  
mytest('yasaka', 19)
mytest('yasaka', 19, 'soccer', 'basketball', 'baseball')

**kwargs 通常是共识

def mytest(name, age, **hobby):
  print("my name is %s, my age is %d" % (name ,age))
  print(hobby, len(hobby))
  
mytest('yasaka', 19)
mytest('yasaka', 19, first_hobby='soccer', second_hobby='basketball', third_hobby='baseball')

  • 21
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值