Python五大参数详解

python基础复习笔记

  • 📝个人介绍:小编大四统计在读,目前保研到统计学top3高校继续攻读统计研究生
    本章讨论一下python中函数参数的介绍

💘参数详解

在定义函数时,我们需要定义参数,下面我们来回顾一下参数的分类

  • 普通参数
  • 默认参数
  • 关键字参数
  • 收集参数

💮1 普通参数

  • 定义是直接定义参数名
  • 调用时把变量或值放入指定的位置
  • 基本语法:
# 定义
def 函数名(参数1,参数2):
    函数体
# 调用函数
函数名(参数1的值,参数2的值)
# 例如我们要定义一个函数,返回两个数的余数
def mod(a,b):
    return a%b
mod(5,3)
2

唯一需要注意的是,在调用时,实参的位置要和形参的位置对应

💧2 默认参数

  • 在定义函数的时候,形参有默认值,应用场景,每次调用函数该参数的值都相同,我们不希望每次调用又重新传入参数
def 函数名(p1=v1, p2=v2):
    函数体
  • 调用时,如果没有对应的形参赋值,则使用定义时的默认值,如果有新传入的实参,则使用传入值
# 下面我们来看一个默认参数的案例,我们判断计算两个数之和
def ev(a,b=2):
    return a+b
ev(4)#此时我们只传入了第一个参数,因此第二个参数默认为2
6
# 传入两个参数
ev(5,2)
7

🌹3 关键字参数

上面介绍的两种参数定义方法在调用时都是按顺序来传入参数。
在传入参数的时候,我们有时候防止顺序出现问题,可以用参数名称=参数值的方式调用函数,参数这样用称为关键字参数。关键字参数用于调用函数的时候 默认参数用于定义函数。语法:

调用函数
函数名(p1=v1,p2=v2)

虽然关键字参数定义起来有一点麻烦,但是也有以下好处:

  • 不容易混淆,不用考虑参数的位置

下面我们举例说明一下关键字参数的使用

首先使用普通参数,并且我们故意在调用函数时把参数传入顺序错乱

# 定义一个animal函数,包括动物的名字,年龄,还有性别
#普通参数
def animal(name,age,gender):
    print('%s, %d岁,性别%s'%(name,age,gender))
animal(18,'洋气','男') # 会报错
---------------------------------------------------------------------------

TypeError                                 Traceback (most recent call last)

<ipython-input-15-b8778c493e95> in <module>
      3 def animal(name,age,gender):
      4     print('%s, %d岁,性别%s'%(name,age,gender))
----> 5 animal(18,'洋气','男') # 会报错


<ipython-input-15-b8778c493e95> in animal(name, age, gender)
      2 #普通参数
      3 def animal(name,age,gender):
----> 4     print('%s, %d岁,性别%s'%(name,age,gender))
      5 animal(18,'洋气','男') # 会报错


TypeError: %d format: a number is required, not str
def animal(name,age,gender):
    print('%s, %d岁,性别%s'%(name,age,gender))
animal(age = 18,name='洋气',gender='男') 
洋气, 18岁,性别男

🥀4 收集参数/可变参数

有时候我们不确定参数调用的时候会输入多少个参数,或者允许调用者输入随意个参数的时候, 这个时候往往定义一个收集参数,也叫可变参数,在调用的时候,如果函数定义只定义了一个普通参数,这个时候如果调用的时候 传入了多个普通参数,此时除了第一个,其余所有的否放入了一个特定的变量里,
收集参数分为两种,分别用来收集位置参数和关键词字参数:

  • *args
  • **args
    基本语法:
def 函数名(*args):
    函数体
# 调用函数
函数名(实参1,实参2,...)
  • 在使用收集参数时需要在形参名前加*
  • *收集的参数包含调用函数是所有没有关键字的形参
  • 收集参数得到的是一个元组
  • 可以和普通参数和默认参数共存
def animal(age,*args):
    print(age)
    print(args)
animal(18,'洋气','比比')
18
('洋气', '比比')

可以看出我们一共传入了三个位置参数,但是在我们函数定义的时候值定义了一个位置参数,还有两个自动传入给收集参数,并且以元组保存,我们可以使用for循环遍历这个元组

def animal(age,*args):
    print(age)
    for i in args:
        print(i)
animal(18,'洋气','比比')
18
洋气
比比

🌺5 关键字参数收集参数(**args)

上述的收集参数是收集位置参数的,下面复习关键字参数收集参数,基本语法如下:

# 定义参数
def 函数名(**kargs):
    函数体
# 调用函数:
函数名(p1=v1,p2=v2,p3=v3)
  • 在使用收集参数时需要在形参名前加**
  • **收集的参数包含调用函数是所有关键字参数
  • 收集参数得到的是一个字典
  • 可以和普通参数和默认参数共存,但必须写在最后面
def animal(age,*args, **kargs):
    print(age)
    for i in args:
        print(i)
    for k,v in kargs.items():
        print(k,':',v)
animal(18,'洋气','比比',name='小李',sex='男')
18
洋气
比比
name : 小李
sex : 男

🌻6 参数总结

  • 各种参数可以混合使用
  • 定义函数顺序如下:
1.位置参数
2.位置参数收集参数
3.关键字参数
4.关键字参数收集参数
  • 收集参数接收的是前面没有匹配的参数,
  • 我们也可以吧元组、列表、字典作为参数直接传给函数,但是需要解包,在我们复习了python内置结构之后再详细介绍

下面来一看各种参数混用的案例

# 定义一个stu
def stu(age,name,*args,interest='running',**kawargs):
    # 接收位置参数和关键字参数
    print('my name is %s,%d years old,my interest is %s'%(name,age,interest))
    print('****')
    # 接收位置参数收集参数
    for i in args:
        print(i)
    print('****')
    # 接受关键字参数收集参数
    for k,v in kawargs.items():
        print(k,':',v)

stu(18,'JoJo')
stu(18,'JoJo','洋气','比比',interest='walking',interest2='reading')
my name is JoJo,18 years old,my interest is running
****
****
my name is JoJo,18 years old,my interest is walking
****
洋气
比比
****
interest2 : reading
#Python##Python工程师#
全部评论
好厉害!top3
1 回复 分享
发布于 2022-04-22 18:03
楼主是大牛啊,多分享分享学习经验
点赞 回复 分享
发布于 2022-04-22 22:32
刚好学到这里,楼主就给我打开了新世界,赞
点赞 回复 分享
发布于 2022-04-22 22:19
这么猛,学到了这个技能
点赞 回复 分享
发布于 2022-04-22 21:52

相关推荐

本科生是不是只能去送外卖了
有气魄的海豚在喝茶:外卖这个版本被保安克制
点赞 评论 收藏
分享
勤劳的鲸鱼在okr拆解:没有别的选择就去吧,有实习和没实习找工作是天上地下
点赞 评论 收藏
分享
野猪不是猪🐗:我assume that你must技术aspect是solid的,temperament也挺good的,however面试不太serious,generally会feel style上不够sharp
点赞 评论 收藏
分享
评论
7
11
分享

创作者周榜

更多
牛客网
牛客企业服务