Python *args和**kwargs用法实例解析
一、*args的使用方法
*args 用来将参数打包成tuple给函数体调用
def fun(*arg): print(arg,type(arg)) print(*arg) fun(1,2,[8,9]) (1, 2, [8, 9]) <class 'tuple'> 2 [8, 9]
并不一定必须是args,也可以是别的,但是官方不建议这样!
args是一个元祖,*号可以将元祖拆分。
二、**kwargs的使用方法
**kwargs 打包关键字参数成dict给函数体调用def fun(**kwarg):
print(kwarg,type(kwarg)) # print(**kwarg)#TypeError: 'a' is an invalid keyword argument for print() fun(a=1,b=6) fun(**{'name':'Peter','gender':'male'}) {'a': 1, 'b': 6} <class 'dict'> {'name': 'Peter', 'gender': 'male'} <class 'dict'>
kwargs也不是必须的,但是也不推荐改成别的!
注意:参数arg、*args、**kwargs三个参数的位置必须是一定的。必须是(arg,*args,**kwargs)这个顺序,否则程序会报错。
错误示范:
def fun(*args,**kwarg): print(args,kwarg,type(kwarg)) # print(**kwarg)#TypeError: 'a' is an invalid keyword argument for print() fun(a=6,1,2,3,**{'name':'Peter','gender':'male'}) File "C:/Users/Administrator.SC-201903160419/Desktop/笔记/myrequest.py", line 37 fun(a=6,1,2,3,**{'name':'Peter','gender':'male'}) ^ SyntaxError: positional argument follows keyword argument
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。
相关推荐
-
用实例说明python的*args和**kwargs用法
先来看一个例子: 复制代码 代码如下: >>> def foo(*args, **kwargs): print 'args =', args print 'kwargs = ', kwargs print '-----------------------' >>> 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
-
Python可变参数*args和**kwargs用法实例小结
本文实例讲述了Python可变参数*args和**kwargs用法.分享给大家供大家参考,具体如下: 一句话简单概括:当函数的参数不确定的时候就需要用到*args和**kwargs,前者和后者的区别在于,后者引入了"可变"key的概念,而前者没有key的概念,具体看下面的使用样例和具体的解释即可: #!usr/bin/env python #encoding:utf-8 ''''' __Author__:沂水寒城 功能:*args 和 **kwargs ''' def test_fun
-
Spring AOP中使用args表达式的方法示例
本文实例讲述了Spring AOP中使用args表达式的方法.分享给大家供大家参考,具体如下: 一 配置 <?xml version="1.0" encoding="GBK"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xml
-
python函数参数*args**kwargs用法实例
复制代码 代码如下: #coding=utf8__author__ = 'Administrator' # 当函数的参数不确定时,可以使用*args和**kwargs.*args没有key值,**kwargs有key值 def fun_var_args(farg, *args): print 'args:', farg for value in args: print 'another arg:',value # *args可以当作可容纳多个变量组成的list或tupl
-
Python函数中*args和**kwargs来传递变长参数的用法
单星号形式(*args)用来传递非命名键可变参数列表.双星号形式(**kwargs)用来传递键值可变参数列表. 下面的例子,传递了一个固定位置参数和两个变长参数. 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 ar
-
Python中*args和**kwargs的区别详解
一.*args的使用方法 *args 用来将参数打包成tuple给函数体调用 def args_test(x, y, *args): print(x, y, args) args_test(1,2,3,4,5) 1 2 (3, 4, 5) 二.**kwargs的使用方法 **kwargs 打包关键字参数成dict给函数体调用 def kwargs_test(**kwargs): print(kwargs) kwargs_test(a=1, b=2, c=3) {'a': 1, 'c': 3, '
-
Java Varargs 可变参数用法详解
Java1.5 提供了一个叫varargs的新功能,就是可变长度的参数. "Varargs"是 "variable number of arguments"的意思.有时候也被简单的称为 "variable arguments". 定义实参个数可变的方法:只要在一个形参的"类型"与"参数名"之间加上三个连续的"."(即"...",英文里的句中省略号),就可以让它和不确定
-
node.js使用yargs处理命令行参数操作示例
本文实例讲述了node.js使用yargs处理命令行参数.分享给大家供大家参考,具体如下: yargs库能够方便的处理命令行参数. 一.安装 yargs npm install yargs --save 二.读取命令行参数 const yargs = require('yargs'); let argv = yargs.argv; console.log(argv); argv 对象用来保存命令行参数,传递参数时,参数名以 -- 开头,中间使用 = 或 空格,然后接上值 . argv 有一个 下
-
Python *args和**kwargs用法实例解析
一.*args的使用方法 *args 用来将参数打包成tuple给函数体调用 def fun(*arg): print(arg,type(arg)) print(*arg) fun(1,2,[8,9]) (1, 2, [8, 9]) <class 'tuple'> 2 [8, 9] 并不一定必须是args,也可以是别的,但是官方不建议这样! args是一个元祖,*号可以将元祖拆分. 二.**kwargs的使用方法 **kwargs 打包关键字参数成dict给函数体调用def fun(**kwa
-
python定义类self用法实例解析
这篇文章主要介绍了python定义类self用法实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 在定义类的过程中,无论是显式的创建类的构造方法,还是向类中添加实例方法,都要将self参数作为方法的第一个参数. class Person: def __init__(self): print("正在执行构造方法") def study(self, name): print(name, "正在学python")
-
python中enumerate的用法实例解析
在python中enumerate的用法多用于在for循环中得到计数,本文即以实例形式向大家展现python中enumerate的用法.具体如下: enumerate参数为可遍历的变量,如 字符串,列表等: 返回值为enumerate类. 示例代码如下所示: import string s = string.ascii_lowercase e = enumerate(s) print s print list(e) 输出为: abcdefghij [(0, 'a'), (1, 'b'), (2,
-
Python元字符的用法实例解析
反斜杠的作用: 要想将一个元字符^当一个普通字符处理,加反斜杠 例如: >>>import re >>>r=r'\^abc' >>>re.findall(r,'^abc ^abc ^abc') ['^abc','^abc','^abc'] \d匹配任何十进制数,它相当于类[0-9]. \D匹配任何非数字字符,它相当于类[^0-9] \s匹配任何空白字符,他相当于类[\t\n\r\f\v] \S匹配任何非空白字符,它相当于类[^\t\n\r\f\v] \
-
Python numpy线性代数用法实例解析
这篇文章主要介绍了Python numpy线性代数用法实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 numpy中线性代数用法 矩阵乘法 >>> import numpy as np >>> x=np.array([[1,2,3],[4,5,6]]) >>> y=np.array([[7,8],[-1,7],[8,9]]) >>> x array([[1, 2, 3], [4
-
python并发编程之线程实例解析
常用用法 t.is_alive() Python中线程会在一个单独的系统级别线程中执行(比如一个POSIX线程或者一个Windows线程) 这些线程将由操作系统来全权管理.线程一旦启动,将独立执行直到目标函数返回.可以通过查询 一个线程对象的状态,看它是否还在执行t.is_alive() t.join() 可以把一个线程加入到当前线程,并等待它终止 Python解释器在所有线程都终止后才继续执行代码剩余的部分 daemon 对于需要长时间运行的线程或者需要一直运行的后台任务,可以用后台线程(也称
-
Python多层装饰器用法实例分析
本文实例讲述了Python多层装饰器用法.分享给大家供大家参考,具体如下: 前言 Python 的装饰器能够在不破坏函数原本结构的基础上,对函数的功能进行补充.当我们需要对一个函数补充不同的功能,可能需要用到多层的装饰器.在我的使用过程中,遇到了两种装饰器层叠的情况,这里把这两种情况写下来,作为踩坑记录. 情况1 def A(funC): def decorated_C(funE): def decorated_E_by_CA(*args, **kwargs): out = funC(funE)
-
python re模块findall()函数实例解析
本文研究的是re模块findall()函数的相关内容,首先看看实例代码: >>> import re >>> s = "adfad asdfasdf asdfas asdfawef asd adsfas " >>> reObj1 = re.compile('((\w+)\s+\w+)') >>> reObj1.findall(s) [('adfad asdfasdf', 'adfad'), ('asdfas asd
-
Python列表切片常用操作实例解析
这篇文章主要介绍了Python列表切片常用操作实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 最近在爬一个网站的文档的时候,老师要求把一段文字切割开来,根据中间的文本分成两段 故学习了一段时间的切片操作,现把学习成果po上来与大家分享 1.何为切片? 列表的切片就是处理列表中的部分元素,是把整个列表切开的方法. 切片可以说是整个列表中的重点内容,相信你在以后的Python项目中会经常使用到. 它的语法是: 2.简单介绍切片的几个常见操作
随机推荐
- C++面向对象实现五子棋小游戏
- 深入理解javascript构造函数和原型对象
- Apache+php+Mysql在Windows下配置环境步骤说明
- C#判断字符串是否是数字(实例)
- PHP操作MySQL的mysql_fetch_* 函数的常见用法教程
- jsp response.sendRedirect不跳转的原因分析及解决
- js进行表单验证实例分析
- jquery右下角弹出提示框示例代码
- VBS教程:方法-Copy 方法
- jquery 为a标签绑定click事件示例代码
- jQuery中页面返回顶部的方法总结
- JQuery Ajax 异步操作之动态添加节点功能
- js 多层叠的TAB选项卡
- 测试你的JS的掌握程度的代码
- 基于iframe实现类似于ajax的页面无刷新
- Android AsyncTask源码分析
- 微软官方说明文档 免激活合法运行Vista一年
- Angularjs过滤器实现动态搜索与排序功能示例
- Java HttpURLConnection使用方法详解
- golang package time的用法具体详解