首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Python函数的5类参数使用详解

1 各种参数使用之坑

Python强大多变,原因之一在于函数参数类型的多样化。方便的同时,也为使用者带来更多的约束规则。如果不了解这些规则,调用函数时,可能会出现如下一些语法异常:

(1) SyntaxError: positional argument follows keyword argument

(2) TypeError: f() missing 1 required keyword-only argument: 'b'

(3) SyntaxError: keyword argument repeated

(4) TypeError: f() missing 1 required positional argument: 'b'

(5) TypeError: f() got an unexpected keyword argument 'a'

(6) TypeError: f() takes 0 positional arguments but 1 was given

2 总结主要的参数使用规则

位置参数

的定义:时根据函数定义的参数位(形参)置来传递参数,是最常见的参数类型。

位置参数不能缺少:

规则1:位置参数必须一一对应,缺一不可

关键字参数

在函数调用时,通过‘键--值’方式为函数形参传值,不用按照位置为函数形参传值。

这么调用,就是关键字参数:

但是下面调用就不OK:

规则2:关键字参数必须在位置参数右边

下面调用也不OK:

规则3:对同一个形参不能重复传值

默认参数

在定义函数时,可以为形参提供默认值。对于有默认值的形参,调用函数时如果为该参数传值,则使用传入的值,否则使用默认值。如下是默认参数:

规则4:无论是函数的定义还是调用,默认参数的定义应该在位置形参右面

只在定义时赋值一次;默认参数通常应该定义成不可变类型

可变位置参数

如下定义的参数a为可变位置参数:

调用方法:

但是,不能这么调用:

可变关键字参数

如下是可变关键字参数:

调用方法:

但是,不能这么调用:

3 五类参数使用例子

今天举例说明python5类参数:位置参数,关键字参数,默认参数,可变位置或关键字参数的使用。

默认参数不能位于可变关键字参数后.

调用f:

可变位置参数实参后被解析为元组;而c取得默认值10; d被解析为字典.

再次调用f:

a=1传入时a就是关键字参数,b,d都未传值,c被传入12,而非默认值。

注意观察参数, 既可以,也可以 其可读性比第一种更好,建议使用f(a=1)。如果要强制使用,需要在前面添加一个星号:

此时f(1)调用,将会报错:

只能才能OK.

说明前面的发挥作用,它变为只能传入关键字参数,那么如何查看这个参数的类型呢?借助python的模块:

可看到参数的类型为,也就是仅仅为关键字参数。

但是,如果f定义为:

查看参数类型:

可以看到参数既可以是位置参数也可是关键字参数。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20200102A0C0ZE00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券