python中的参数

在Python中定义函数,可以用必选参数、默认参数、可变参数和关键字参数,这4种参数都可以一起使用,或者只用其中某些,但是请注意,

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

请看实例代码:

def func(a,b,c=0,*args,**kw):
    print ‘a=‘,a,‘b=‘,b,‘c=‘,c,‘args=‘,args,‘kw=‘,kw

>>> func(1,2)
a= 1 b= 2 c= 0 args= () kw= {}
>>> func(1,2,3)
a= 1 b= 2 c= 3 args= () kw= {}
>>> func(1,2,4,(1,3,4,5))
a= 1 b= 2 c= 4 args= ((1, 3, 4, 5),) kw= {}
>>> func(1,2,4,11,22,33,44,55)
a= 1 b= 2 c= 4 args= (11, 22, 33, 44, 55) kw= {}
>>> func(1,2,4,11,22,33,44,55,{‘x‘:‘xx‘,‘y‘:‘yy‘})
a= 1 b= 2 c= 4 args= (11, 22, 33, 44, 55, {‘y‘: ‘yy‘, ‘x‘: ‘xx‘}) kw= {}
>>> func(1,2,4,11,22,33,44,55,x=‘xx‘,y=‘yy‘)
a= 1 b= 2 c= 4 args= (11, 22, 33, 44, 55) kw= {‘y‘: ‘yy‘, ‘x‘: ‘xx‘}
#也可以这么写
def func(a,b,c=0,*args,**kw):
    print ‘a=‘,a,‘b=‘,b,‘c=‘,c,‘args=‘,args,‘kw=‘,kw

args = (1, 2, 3, 4)
kw = {‘x‘: 99}
func(1,2,4,*args, **kw)
a= 2 b= 3 c= 4 args= (5, 6, 7, 8) kw= {‘y‘: 100, ‘x‘: 99}

总结:

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

*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})

 
时间: 2024-08-25 07:47:22

python中的参数的相关文章

python中函数参数的引用方式

值传递和引用传递时C++中的概念,在python中函数参数的传递是变量指向的对象的物理内存地址!!! python不允许程序员选择采用传值还是传引用.Python参数传递采用的肯定是"传对象引用"的方式.这种方式相当于传值和传引用的一种综合.如果函数收到的是一个可变对象(比如字典或者列表)的引用,就能修改对象的原始值--相当于通过"传引用"来传递对象.如果函数收到的是一个不可变对象(比如数字.字符或者元组)的引用,就不能直接修改原始对象--相当于通过"传值

Python中的参数是如何传递的?

本文和大家分享的主要是python中参数传递方式相关内容,一起来看看吧,希望对大家学习python有所帮助. 位置参数 调用函数时,根据函数定义的参数位置来传递参数. 1 def right_triangle_area(a,b):2     return 1/2*a*b3 4 print(right_triangle_area(3,4))5 # 位置参数传递 求直角三角形面积,a.b分别为两条直角边,这里调用函数时使用的是位置参数传递.在位置参数传递中,参数的顺序是不可改变的. 关键词参数传递

(转)python中的参数:*args和**kwargs

def foo(*args, **kwargs):print 'args = ', argsprint 'kwargs = ', kwargsprint '---------------------------------------'if __name__ == '__main__':foo(1,2,3,4)foo(a=1,b=2,c=3)foo(1,2,3,4, a=1,b=2,c=3)foo('a', 1, None, a=1, b='2', c=3) 输出结果如下:args = (1,

python中函数参数*args和**kw的区别

1.函数与参数(实参) 在python中创建函数是def,创建函数名是def f(),f函数名字,def f(a,b),这里的a,b是两个参数,函数名是自定义的,参数也是自定义,随意就好.看图如下效果: 这里f(1,2)是实参,然后调用上面的函数. 下面讲解下*args和**kw的区别. 2.*args 这里的*后面的值是自定义的,只要不是数字就行,定义成*abc,*ccc都可以,len()是函数,它的意思是返回字符串长度.然后前面的a,b是普通参数,print a print b就是回显1,2

Python中的参数解包:`*`表达式和 `**`表达式

目录 1.参数解包:方法调用中的*表达式和**表达式 2.参数解包:方法定义中的*表达式和**表达式 3.在元组,列表,集合和字典中解包 4.Extended Unpacking:赋值表达式左边的*表达式 1.参数解包:方法调用中的*表达式和**表达式 如果语法*表达式出现在函数调用中,则该表达式必须是可迭代的. 这些可迭代集合的元素被视为附加的位置参数. 对于调用f(x1, x2, *y, x3, x4),如果y等于序列[y1,...,yM],则等效于调用f(x1, x2, y1, ...,

Python中 可变参数

def make_pizza(*pizzas): *pizzas : 相当于一个创建一个元组,参数放入pizzas 的元组中. def make_pizza(size,*pizzas): 需要注意的是多个参数,*pizzas 需要在形参的后面. **pizzas 表示的是 建立一个字典. 原文地址:https://www.cnblogs.com/lyjmatrix/p/10016151.html

python中特殊参数self的作用

特殊参数self的作用:self会接收实例化过程中传入的数据,当实例对象创建后,实例便会代替 self,在代码中运行. self代表的是类的实例本身,方便数据的流转.对此,我们需要记住两点: 第一点:只要在类中用def创建方法时,就必须把第一个参数位置留给 self,并在调用方法时忽略它(不用给self传参). 第二点:当在类的方法内部想调用类属性或其他方法时,就要采用self.属性名或self.方法名的格式. 1 class Chinese: # 创建类 2 3 name = '吴' # 类属

Python中带参数的装饰器

装饰器本身是用来是为一个函数是实现新的功能,并且不改变原函数的代码以及调用方式. 遇到这样一种问题: 众多函数调用了你写的装饰器,但客户有需求说,我想实现我可以随之控制装饰器是否生效. 那你就不可能在得到命令的时候去原函数头部去做删除和添加装饰器调用的命令.这是就可以用到带参数的装饰器,定义一个开关,调用装饰器的时候,把这个装饰器的开关参数给传递进去,这样当开关打开的时候装饰器生效,关闭的时候则只执行原函数的代码. 举例:开关参数为True的时候执行过程: 1 F = True #step 1

Python中的可变参数和关键字参数

刚开始接触 python 的时候,对 python 中的 *wargs (可变参数) 和 **kwargs (关键字参数)的理解不是很透彻,看了一下 <Explore Python>一书,里面对这一部分的描述相对浅显易懂, 这里依据个人理解进行相关总结. 可变参数(*args) 对于可变参数可以联想到 C# 中的可变参数.可变参数是一个数量不确定的列表集合,可以是 list 类型,也可以是 tuple 类型 我们定义如下代码段: def add(*numbers): print(type(nu