Python函数中*args和**kwargs来传递变长参数的用法

参考自: http://www.jb51.net/article/78705.htm

单星号形式(*args)用来传递非命名键可变参数列表。双星号形式(**kwargs)用来传递键值可变参数列表。

1. 传递了一个固定位置参数和两个变长参数。

def test_var_args(farg, *args):
  print "formal arg:", farg
  for arg in args:
    print "another arg:", arg

test_var_args(1, "two", 3)

结果是:

formal arg: 1
another arg: two
another arg: 3

2.一个固定参数和两个键值参数。

def test_var_kwargs(farg, **kwargs):
  print "formal arg:", farg
  for key in kwargs:
    print "another keyword arg: %s: %s" % (key, kwargs[key])

test_var_kwargs(farg=1, myarg2="two", myarg3=3)

结果是:

formal arg: 1
another keyword arg: myarg2: two
another keyword arg: myarg3: 3

3.  调用函数时,使用 *args and **kwargs

def test_var_args_call(arg1, arg2, arg3):
  print "arg1:", arg1
  print "arg2:", arg2
  print "arg3:", arg3

args = ("two", 3)
test_var_args_call(1, *args)

结果是:

arg1: 1
arg2: two
arg3: 3

-------------------------------------------

键值对方式:

def test_var_args_call(arg1, arg2, arg3):
  print "arg1:", arg1
  print "arg2:", arg2
  print "arg3:", arg3

kwargs = {"arg3": 3, "arg2": "two"}
test_var_args_call(1, **kwargs)

 结果是:

arg1: 1
arg2: two
arg3: 3

原文地址:https://www.cnblogs.com/liuw-flexi/p/8978878.html

时间: 2024-11-07 18:29:31

Python函数中*args和**kwargs来传递变长参数的用法的相关文章

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

scala学习手记21 - 传递变长参数

在Java中是可以使用变长参数的,如下面的方法: public void check(String ... args){ for(String tmp : args){ System.out.println(tmp); } } 在scala中也可以使用变长参数.和java一样,也是只有最后一个参数可以接收可变长度的参数.使用方式是在参数类型后使用特殊符号"*",如下面的max()方法: def max(values: Int*) = values.foldLeft(values(0))

【小白学Lua】之Lua变长参数和unpack函数

一.简介 Lua的变长参数和unpack函数在实际的开发中应用的还挺多的,比如在设计print函数的时候,需要支持对多个变量进行打印输出,这时我们就需要用到Lua中的变长参数和unpack函数了. 二.Lua变长参数与unpack函数 Lua中支持可变参数,用 ... 表示.比如定义下面的这样一个函数: local function func1(...) end 当然它也支持在变长参数前面添加固定参数: local function func1(var,...) --dosomething en

【Unix环境高级编程】编写变长参数函数

文件的格式输入输出函数都支持变长参数.定义时,变长参数列表通过省略号'...'表示, 因此函数定义格式为: type 函数名(parm1, parm2,parmN,...); Unix的变长参数通过va_list对象实现,定义在文件'stdarg.h'中,变长参数的应用模板如下所示: #include <stdarg.h> function(parmN,...){ va_list pvar; ................................. va_start(pvar,par

Python中*args和**kwargs 的简单使用

# 在函数定义中使用*args和kwargs传递可变长参数. *args用作传递非命名键值可变长参数列表(位置参数); kwargs用作传递键值可变长参数列表# *args表示任何多个无名参数,它是一个tuple# **kwargs表示关键字参数,它是一个dict # 注:同时使用*args和**kwargs时,*args参数列必须要在**kwargs前 # eg _v1 def func(f,*args): print ("formal arg:",f) for f in args:

python函数中的默认参数问题

Python 函数中,参数的传递本质上是一种赋值操作 def foo(arg): arg = 2 print(arg) a = 1 foo(a) # 输出:2 print(a) # 输出:1 def bar(args): args.append(1) b = [] print(b)# 输出:[] print(id(b)) # 输出:4324106952 bar(b) print(b) # 输出:[1] print(id(b)) # 输出:4324106952 def foo(x, a_list=

Python函数中的可变长参数_速记

一.Python函数中的参数 1.使用python的函数时,有参数类别,比如位置参数.关键字参数.可变长参数 2.位置参数.关键字参数很好理解,关键是可变长参数经常能见到,但是一直没有搞懂是什么意思 二.可变长参数 1.一个星号:函数可以接收任意个数的参数,只需要在形参前面加一个*(星号),一个星号形参的函数会把多个位置参数值当成元祖的形式传入,也就是传入的多个参数值可以在函数内部进行元祖遍历 def length_param(a, *args): print("a=", a) pri

python函数2(返回值、传递列表...)

python函数2(返回值.传递列表...) 1.返回值 1.1.返回简单的值 1 #返回简单值 2 def get_formatted_name(first_name,last_name): 3 """返回整洁的名字""" 4 full_name = first_name + ' ' + last_name 5 return full_name.title() #将首字母大写 6 7 musician = get_formatted_name(

python函数中的参数类型

python函数中的参数 python的函数类型详解