当前位置:   article > 正文

python05-函数的位置参数、默认参数、可变参数、键值对参数(关键字参数)_键值参数

键值参数

函数的参数是python学习中遇到的第一个难点。函数的参数有四大类:
位置参数、默认参数、可变参数、键-值参数(或者叫关键字参数)

1 位置参数

位置参数就是最普通的参数,如果在定义的时候有位置参数,调用的时候就一定要赋值!比如我定义一个函数如下:

def Xiayule(x):
    print(x)
  • 1
  • 2

这个参数就是位置参数,调用的时候就要 Xiayule(‘Sun’)
弄出Xiayule()这种幺蛾子是不对的。

2 默认参数

默认参数是指在定义函数的时候就给定默认值的参数,所以在调用的时候你想给它值就给,不想给就不给。是最任性的参数。示例如下:

def Student(name,age=20):
    print(name,age)
  • 1
  • 2

在调用该函数的时候,就有两种方式了:

  • Student(‘sui’)
  • Student(‘sun’,18)

第一种调用方式代表’sui’这个哥们是默认的20岁
而第二种调用意味着’sun’这个姐妹是指定的18岁。

可以猜到默认参数的使用:就是某一个参数只有在少数情况下需要修改!
但是默认参数的使用有两点需要格外注意:

  • 默认参数跟位置参数同时存在的话,要把默认参数放在后边啊,放在前边的话,如果只传一个参数进去,编译器也不知道你是谁。
  • 默认参数不可以是可变对象。因为可变对象有可能在函数中值发生改变,也就不是默认值了。
讲到这里,插播一条重要概念,非常重要:可变对象与不可变对象

在python中可变对象有:list,dict
不可变对象有:int,float,tuple,str

python中比较容易混淆的是这俩概念跟变量混在一起。比如说:
a=1
a=2
在上边的这两句,是变量的引用对象变了,a原来引用的是1,第二句改为引用2。但是12这两个int本身没有发生变化。
b=[1,2,3]
b+=[6]
b的引用对象是没有变化的,它引用的就是后面的那个list,但是这个list本身的内容变了,由[1,2,3]变为了[1,2,3,6]。
当然这个实例也说明一点,两个list是可以相加连接在一起的!棒不棒!
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

3 可变参数

可变参数的意思就是参数的个数无法确定,可以是0个,也可是5个,看心情。所以可变参数传进去的只能是list或是tuple
先声明一个概念:

a=[1,2,3,4] 那么 *a就代表了列表a中的内容。重复一遍,a代表列表,*a代表列表中的内容。

def Student(*name):
    for n in name:
        print(n)
  • 1
  • 2
  • 3

定义了一个带有可变参数的函数如上所示,在调用的该函数的时候有三种方法:

Student(‘sui’,’sun’)
  • 1

或者是

ads=[‘sui’,’sun’]
Student(*ads)
  • 1
  • 2

或者是

Student()
  • 1

4 键-值对参数(关键字参数)

前面的可变参数用到了list/tuple,所以聪明的python怎么可能不把dict用上!比如说在填一个表的时候,年龄、姓名是必填的,但是有的哥们也提供了自己的性取向,不对不对,是性别。为了能够把人家的性别也统计进去,就需要键值对参数。

定义的方式是 **buchong
buchong是一个dict,**buchong就代表了buchong里的内容。
tuple/list是一个星号,dict是两个星号。浅薄的我觉得dict就是比list/tuple高一级哈哈哈。

def Student(name,age,**buchong):
    print(name,age,buchong)
  • 1
  • 2

上面写了一个包含键值对参数的函数。调用的时候同样可以有一下三种方式:

Student(‘sui’,20,gender=’male’)
运行结果: ‘sui’ 20 {‘gender’:’male’}
  • 1
  • 2

这里需要注意的就是,在传参的时候用的是 gender=’male’而不是’gender’:’male’ 其实这一点吧,吧,吧,我刚接触的时候也觉得难懂啊!!

buchong={‘gender’:’female’}
Student(‘sun’,18,**buchong)
运行结果同上
  • 1
  • 2
  • 3
Student(‘sun’,18)
运行结果: ‘sun’ 18 {}
(什么都没有,就打印出一个大括号)
  • 1
  • 2
  • 3

5 命名键值对参数(命名关键字参数)

命名的意思就是,填表你不能瞎填啊,真把性取向填上了影响也不好。所以限定个范围,只准填什么东西。

def Student(name,age,*,city,gender)
    print(name,age,city,gender)
  • 1
  • 2

调用的时候

Student(‘sui’,20,city=’wuhan’,gender=’male’)
  • 1

其实,命名关键字参数并没有什么卵用,因为它跟位置参数一个样,调用的时候必须每个都赋值。我百度了一下,人家说这个的作用就是因为它在调用的时候必须加上参数名,所以即便顺序错了也没关系。所以关于这个的剩余知识点我也不想写了呢。

6 参数组合

具体的使用中,经常会不止使用到一种参数。这些参数是有顺序的:
位置参数,默认参数,可变参数,键值对参数(关键字参数)

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/588901
推荐阅读
相关标签
  

闽ICP备14008679号