*args 和 **kwargs 的区别
截取百度里的两个答案:
这是Python函数可变参数 args及kwargs
*args表示任何多个无名参数,它是一个tuple
**kwargs表示关键字参数,它是一个dict
测试代码如下:
def foo(*args,**kwargs):
print 'args=',args
print 'kwargs=',kwargs
print '**********************'
if __name__=='__main__':
foo(1,2,3)
foo(a=1,b=2,c=3)
foo(1,2,3,a=1,b=2,c=3)
foo(1,'b','c',a=1,b='b',c='c')
执行结果如下:
args= (1, 2, 3)
kwargs= {}
**********************
args= ()
kwargs= {'a': 1, 'c': 3, 'b': 2}
**********************
args= (1, 2, 3)
kwargs= {'a': 1, 'c': 3, 'b': 2}
**********************
args= (1, 'b', 'c')
kwargs= {'a': 1, 'c': 'c', 'b': 'b'}
**********************
百度回答2:这是一种特殊的语法,在函数定义中使用*args和**kwargs传递可变长参数。*args用作传递非命名键值可变长参数列表(位置参数); **kwargs用作传递键值可变长参数列表。
示例 *args
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
示例 **kwargs
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
练习:
print("ex18.命名,变量,代码,函数")
#print_two是函数名,(*args)是参数,print()是函数体
def print_two(*args):
arg1,arg2 = args
print("arg1:%r,arg2:%r"%(arg1,arg2))
def print_two_again(arg1,arg2):
print("arg1:%r,arg2:%r"%(arg1,arg2))
def print_one(arg1):
print("arg1:%r"%arg1)
def print_none():
print("I got nothin'.")
#以下为函数参数
print_two("Zed","solo")
print_two_again("Zed","Shaw")
print_one("First!")
print_none()
'''
注意事项:
1、函数定义是以def开始
2、函数名称后面跟着括号,和冒号
3、函数名称可以是字符和下划线组成
4、括号内包含参数,且参数是以逗号隔开;也可以没有参数
5、函数体前有缩进,4个空格
6、参数内容可以重复,参数名称不可以一样
7、函数结束位置取消了缩进
'''
原文:https://zhidao.baidu.com/question/367559039025445444.html
*args 和 **kwargs 的区别的更多相关文章
- python 中 *args he **kwargs的区别
''' 一 *args 和 **kwargs 的区别? *args 表示任意个 无名参数, 类型是元祖 tuple. **kwargs 表示的是关键字的参数 传入的参数是 dict 类型. 当*和** ...
- python 中的 args,*args,**kwargs的区别
一.*args的使用方法 *args 用来将参数打包成tuple给函数体调用 例子一:def function(*args): print(args, type(args))function ...
- python 中 *args 和 **kwargs 的区别
在 python 中,*args 和 **kwargs 都代表 1个 或 多个 参数的意思.*args 传入tuple 类型的无名参数,而 **kwargs 传入的参数是 dict 类型.下文举例说明 ...
- *args和**kwargs的区别
*args和**kwargs表示可变长度的参数. *args是元组类型: **kwargs是字典类型: 注意:arg.*args.**kwargs三个参数的位置必须是固定的,否则会报错.
- Python中*args和**kwargs的区别
(注:本文部分内容摘自互联网,由于作者水平有限,不足之处,还望留言指正.) 中秋的夜,微凉,但却始终看不见月亮. 我想,它一定是害羞了,悄悄的躲到了乌云的后面. 嗯,就是这样,我真是太TM机智了. 正 ...
- Python中 *args 和 **kwargs 的区别
先来看个例子: def foo(*args, **kwargs): print 'args = ', args print 'kwargs = ', kwargs print '----------- ...
- 【转】Python中*args和**kwargs的区别
一.*args的使用方法 *args 用来将参数打包成tuple给函数体调用 例子一: 输出结果以元组的形式展示 def function(*args): print(args, type(args) ...
- 【Python】*args和**kwargs的区别
1.*args表示将参数作为元组传给函数 通过一个函数的定义来理解’*args’的含义 修改函数的定义: >>> def fun(*args): ... print args ... ...
- python:函数中的*args与**kwargs
首先定义一个包含*args和**kwargs的函数,这个函数唯一的功能就是输出自己的两个参数,以此来理解*args和**kwargs def myFunc(*args, **kwargs): prin ...
随机推荐
- HDU3652 B-number 题解 数位DP
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3652 题目大意: 求区间 \([1, n]\) 范围内包含连续的数位"13"并且能 ...
- 推荐中的多任务学习-YouTube视频推荐
本文将介绍Google发表在RecSys'19 的论文<Recommending What Video to Watch Next: A Multitask Ranking System> ...
- 天梯 L2 紧急救援 (dijkstra变形+记录路径)
L2-001 紧急救援 (25 分) 作为一个城市的应急救援队伍的负责人,你有一张特殊的全国地图.在地图上显示有多个分散的城市和一些连接城市的快速道路.每个城市的救援队数量和每一条连接两个城市的快速道 ...
- Docker系列-第七篇Docker构建SpringBoot应用
1.基于Dockerfile构建SpringBoot镜像 1.1准备工作 将SpringBoot项目通过maven打成jar包 mvn clean package #使用maven打包项目 1.2使用 ...
- 用Django自动生成表遇到问题
因为以前在数据库中已经生成过Django 叫App01下的表,所以无法生成,在数据库中执行这个命令 DELETE FROM django_migrations WHERE app='App01';然后 ...
- feign架构 原理解析
什么是feign? 来自官网的解释:Feign makes writing java http clients easier 在使用feign之前,我们怎么发送请求? 拿okhttp举例: publi ...
- java.sql.SQLException: connection holder is null 问题处理
问题描述 上上个周测试的时候突然报系统异常,于是我立即查看日志,发现是一个数据库异常:java.sql.SQLException: connection holder is null我第一想到的就是可 ...
- phpstorm配置git并解决Terminal 中文乱码(Unicode 编码)的方法
前言:在使用PHPstorm的时候,需要用到terminal,主要还是用这个操作git,但是在使用这个的时候会发现,代码里所有中文都是乱码状态,不利于使用,下面就来看看怎么解决这个问题 一.先在php ...
- SQLiteOpenHelperde的oncreate方法
main中
- Mabitis
Mybatis 一.框架概念: Java框架,一个软件半成品,简单来说就是一个别人搭好的舞台,你来做表演,说白了Java框架就是封装好方便程序员操作的类,使项目的开发更简单,维护起来也更容易. 而My ...