美文网首页
关键字参数

关键字参数

作者: lintong | 来源:发表于2015-02-10 22:45 被阅读725次

一般在定义函数的时候,需要明确给出函数的参数个数,但是有时候无法知道函数的个数情况(类似c语言里面的printf函数)。在Python中,带*的参数就是用来接收可变数量的参数的。

def funcD(a, b, *c):
  print a
  print b
  print "length of c is: %d " % len(c)
  print c

调用funcD(1, 2, 3, 4, 5, 6)结果是
1
2
length of c is: 4
(3, 4, 5, 6)

我们看到,前面两个参数被a、b接受了,剩下的4个参数,全部被c接受了,c在这里是一个tuple(这里有一个打包过程)。我们在调用funcD的时候,至少要传递2个参数,2个以上的参数,都放到c里了,如果只有两个参数,那么c就是一个empty tuple。

调用函数的时候,传递的参数都是根据位置来跟函数定义里的参数表匹配的,比如funcB(100, 99)和funcB(99, 100)的执行结果是不一样的。在Python里,还支持一种用关键字参数调用函数的办法,也就是在调用函数的时候,明确指定参数值付给那个形参。比如还是上面的funcB(a, b),我们通过这两种方式调用
funcB(a=100, b=99)

funcB(b=99, a=100)
结果跟funcB(100, 99)都是一样的,因为我们在使用关键字参数调用的时候,指定了把100赋值给a,99赋值给b。也就是说,关键字参数可以让我们在调用函数的时候打乱参数传递的顺序!

另外,在函数调用中,可以混合使用基于位置匹配的参数和关键字参数,前题是先给出固定位置的参数,比如
def funcE(a, b, c):
print a
print b
print c
调用funcE(100, 99, 98)和调用funcE(100, c=98, b=99)的结果是一样的。

如果一个函数定义中的最后一个形参有 ** (双星号)前缀,所有正常形参之外的其他的关键字参数都将被放置在一个字典中传递给函数,比如:

def funcF(a, **b):
  print a
  for x in b:
    print x + ": " + str(b[x])
调用funcF(100, c='你好', b=200),执行结果
100
c: 你好
b: 200

b是一个dict对象实例,它接受了关键字参数b和c。

相关文章

  • Python知识

    命名关键字参数用于指定关键字 参数定义的顺序必须是:位置参数、默认参数(关键字参数)、可变参数、命名关键字参数、可...

  • 关于python函数的参数

    必选参数 默认参数 可变参数 关键字参数-命名关键字参数

  • 5.函数的参数

    位置参数 默认参数 可变参数 关键字参数 命名关键字参数 参数组合

  • 函数的参数

    函数的参数顺序是 必选参数、默认参数、可变参数、关键字参数、命名关键字参数 必选参数 默认参数 可变参数 关键...

  • Python之函数的参数

    Python中函数的参数有五种:位置参数(必选参数)、默认参数、可变参数、关键字参数、命名关键字参数。 位置参数 ...

  • 函数的参数

    函数的参数: 关键词:必选参数、默认参数(a=b)、可变参数(*args)、关键字参数(**kw)、命名关键字参数...

  • #python入门4#函数参数

    参数种类:5, 必选参数,默认参数, 可变参数,关键字参数,命名关键字参数 位置参数 对于power(x)函数,参...

  • Python 函数

    调用函数 定义函数 函数的参数必选参数、默认参数、可变参数、关键字参数、命名关键字参数 位置参数 默认参数 可变参...

  • python传参和装饰器

    一. 位置参数与关键字参数 结论很简单,有位置参数时,位置参数必须在关键字参数的前面,并且关键字参数之间不存在先后...

  • python-函数参数的顺序

    定义形参的顺序依次为:形参、默认参数、可变参数、命名关键字参数、关键字参数 可变参数后面不需要再添加命名关键字参数...

网友评论

      本文标题:关键字参数

      本文链接:https://www.haomeiwen.com/subject/bjvjxttx.html