参数定义的顺序必须是:必选参数、默认参数、可变参数、命名关键字参数和关键字参数。

在Python中定义函数,可以用必选参数、默认参数、可变参数、关键字参数和命名关键字参数,这5种参数都可以组合使用。但是请注意,参数定义的顺序必须是:必选参数、默认参数、可变参数、命名关键字参数和关键字参数。

Python的函数具有非常灵活的参数形态,既可以实现简单的调用,又可以传入非常复杂的参数。

默认参数一定要用不可变对象,如果是可变对象,程序运行时会有逻辑错误!

要注意定义可变参数和关键字参数的语法:

*args是可变参数,args接收的是一个tuple;

**kw是关键字参数,kw接收的是一个dict。

以及调用函数时如何传入可变参数和关键字参数的语法:

可变参数既可以直接传入:func(1, 2, 3),又可以先组装list或tuple,再通过*args传入:func(*(1, 2, 3))

关键字参数既可以直接传入:func(a=1, b=2),又可以先组装dict,再通过**kw传入:func(**{‘a‘: 1, ‘b‘: 2})

使用*args**kw是Python的习惯写法,当然也可以用其他参数名,但最好使用习惯用法。

命名的关键字参数是为了限制调用者可以传入的参数名,同时可以提供默认值。

定义命名的关键字参数在没有可变参数的情况下不要忘了写分隔符*,否则定义的将是位置参数。

原文地址:https://www.cnblogs.com/cranx/p/8892035.html

时间: 2024-08-04 09:58:23

参数定义的顺序必须是:必选参数、默认参数、可变参数、命名关键字参数和关键字参数。的相关文章

Python参数定义的顺序

1.参数定义的顺序必须是:必选参数.默认参数.可变参数和关键字参数. 2.对于任意函数,都可以通过类似func(*args, **kw)的形式调用它,无论它的参数是如何定义的.

Python 必选参数,默认参数,可变参数,关键字参数和命名关键字参数

Py的参数还真是多,用起来还是很方便的,这么多参数种类可见它在工程上的实用性还是非常广泛的. 挺有意思的,本文主要参照Liaoxuefeng的Python教程. #必选参数 def quadratic(a, b, c): if not isinstance(a, (int, float)) or not isinstance(b, (int, float)) or not isinstance(c, (int, float)): raise TypeError('bad operand type

python-在定义函数时,不定长参数中,默认值参数不能放在必选参数前面

如果一个函数的参数中含有默认参数,则这个默认参数后的所有参数都必须是默认参数,否则会报错:SyntaxError: non-default argument follows default argument 例如: #-*- coding:utf-8 -*-def test(a=11,b,c): #默认值参数不能放在必选参数前面    print(a)    print(b)    print(c)    test(11,22,33) 改正: #-*- coding:utf-8 -*- def

Python函数中的必选/默认/可变/关键字/命名参数

Python函数中的必选/默认/可变/关键字/命名参数 一.默认参数 def power(x, n=2): s = 1 while n > 0: n = n - 1 s = s * x return s n为默认参数,直接赋值 默认参数设置的两个注意事项: 1.必选参数在前,默认参数在后,否则会报错 2.当函数有多个参数时,把变化大的参数放前面,变化小的参数放后面.变化小的参数就可以作为默认参数. 二.可变参数 在python中,如果我们需要传入不确定数目的参数,就可以利用可变参数 def ca

基类中定义的虚函数在派生类中重新定义时,其函数原型,包括返回类型、函数名、参数个数、参数类型及参数的先后顺序,都必须与基类中的原型完全相同 but------> 可以返回派生类对象的引用或指针

您查询的关键词是:c++primer习题15.25 以下是该网页在北京时间 2016年07月15日 02:57:08 的快照: 如果打开速度慢,可以尝试快速版:如果想更新或删除快照,可以投诉快照. 百度和网页 http://bbs.csdn.net/topics/380238133 的作者无关,不对其内容负责.百度快照谨为网络故障时之索引,不代表被搜索网站的即时页面. 首页 精选版块 移动开发 iOS Android Qt WP 云计算 IaaS Pass/SaaS 分布式计算/Hadoop J

python 函数的参数定义及调用

参数定义:1. 位置参数:    这是熟悉的标准化参数,位置参数必须在调用函数中定义的准确顺序来传递,在没有默认参数的情况下,传入参数    的精确数目必须和声明的数目一致. def foo(who, name): print('{0} is {1}'.format(who, name) foo函数有两个位置参数,那么意味这foo的调用必须有两个参数,不能多也不能少2. 默认参数: 定义默认参数的如下: def func(posargs, defargs=dval, defargs2=dval2

Python中函数的参数定义和可变参数

转自:http://www.cnblogs.com/tqsummer/archive/2011/01/25/1944416.html  简洁易懂啊,好文 刚学用Python的时候,特别是看一些库的源码时,经常会看到func(*args, **kwargs)这样的函数定义,这个*和**让人有点费解.其实只要把函数参数定义搞清楚了,就不难理解了. 先说说函数定义,我们都知道,下面的代码定义了一个函数funcA def funcA():  pass    显然,函数funcA没有参数(同时啥也不干:D

ASP.NET MVC验证标注的扩展-checkbox必选

我们知道ASP.NET mvc提供一些表单的验证标注,比如必填属性RequiredAttribute 但是这个属性不适合选择框的必选 但是很多时候,我们却是需要一些必选的单选框 比如网站注册的时候,需要用户同意网站的一些规定等等 为此,我封装了一个BooleanRequiredAttribute的标注类, 该类可以标注那些框必填 具体类如下: public class BooleanRequiredAttribute : ValidationAttribute, IClientValidatab

android屏幕分类与屏幕相关参数定义

android设备运行在各种不同的屏幕中,这些屏幕有着不同的screen sizes(屏幕大小)和screen densities(屏幕密度).screen sizes表示屏幕的实际物理大小,比如5寸手机,7寸平板,8寸平板.而screen densities表示屏幕的像素密度,比如同样5寸的手机,有720p的,有1080p的.screen sizes和screen densities从两个维度表示了屏幕的属性,他们互不影响. Screen Sizes 屏幕的真实物理尺寸,以屏幕的对角线测量,一