args *args **kwargs区别
python 函数中的参数类型有两种,分别为 位置参数和关键字参数:
一 、位置参数(该类参数位置固定不变)
args: 表示默认位置参数,该参数是具象的,有多少个参数就传递多少参数,且参数位置和定义时一致,数目不统一会报错,可以随意命名,参数数据类型和传递时给定的数据类型一致。
*args: 表示可变位置参数,该参数位置和传递时保持一致,但是可变的,可以有,可以无,参数传递到一个元组中。
二、关键字参数
**kwargs: 表示可变关键字参数,该参数可以传递0个或多个,可有可无,参数传递到一个字典中,以键值对形式存在。
综合示例:
#!/usr/bin/env python
# -*- coding:utf-8 _*-
__author__ = '池偏一' '''
@author:shz
@license: Apache Licence
@file: testargs.py
@time: 2018/06/19
@site:
@software: PyCharm
''' import sys reload(sys)
sys.setdefaultencoding('utf-8') class TestArgs(object): def default_args(self, x, y):
print x, y
print type(x), type(y) def variable_args(self, *args):
print args
print type(args) def variable_kwargs(self, **kwargs):
print kwargs
print type(kwargs) def allargs(self, x, *args, **kwargs):
print x
print args
print kwargs if __name__ == '__main__':
ts = TestArgs()
try:
ts.default_args()
except TypeError:
print "默认参数形式请传递相对应参数"
ts.default_args('123', 45) print '-*-' * 5 ts.variable_args()
ts.variable_args(1, 3)
ts.variable_args(123, '456', 789, 'aaaaa') print '-*-' * 5 ts.variable_kwargs()
ts.variable_kwargs(x='aaa', y=123)
ts.variable_kwargs(a=1, b=2, c=3, d='qqq', e='www', f='rrr') print '-*-' * 5 ts.allargs('111')
ts.allargs('111', 'aaa', 444)
ts.allargs('111', a='2342', b=234)
args *args **kwargs区别的更多相关文章
- python函数可变参数*args和**kwargs区别
#*args(元组列表)和**kwargs(字典)的区别 def tuple_test(*args): for i in args: print 'hello'+i s=('xuexi','mili' ...
- python中的*args和** kwargs区别
写了几个月的oython了总感觉除了if else for while什么都不太会,看了架构师的代码参数传递总是使用*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 '----------- ...
- *args 和 **kwargs 的区别
截取百度里的两个答案: 这是Python函数可变参数 args及kwargs *args表示任何多个无名参数,它是一个tuple **kwargs表示关键字参数,它是一个dict 测试代码如下: de ...
随机推荐
- SpringAop名词解释+基于xml的配置
1,AOP名词解释 2,AOP演示 (1)导包: (2)准备目标对象 package com.songyan.service; import org.aspectj.lang.ProceedingJo ...
- Spring Boot特点
特点: 1.化繁为简,简化配置 2.备受关注,是下一代框架 3.为服务的入门级框架
- phpredis Floating point exception
发生在高版本的gcc编译后的so用于低版本gcc编译出来的php, 解决方法, 加上参数-Wl,--hash-style=sysv phpize ./configure vi Makefile CC ...
- 为何Redis要比Memcached好用
Redis是新兴的通用存储系统,而Memcached仍有其适用领域 Memcached还是Redis? 在现代高性能Web应用中这一直是个争论不休的话题. 在基于关系型数据库的Web应用需要提高性能时 ...
- Java:网络编程值TCP的使用
演示TCP传输 1.Tcp分客户端和服务端 2.客服端对应的对象是scoket 服务端对应的对象是serverscoket 客户端: 通过查阅scoket对象,发现在建立对象时,就可以连 ...
- 项目笔记:导出Excel功能分sheet页插入数据
导出Excel功能分sheet页处理数据: /*导出EXCEL*/ public void createExcel() { log.info("导出Excel功能已经启动-BEGIN&quo ...
- dmz主机就是DNAT功能的体现
端口映射和DMZ是提供内网和外网映射的,具体各自如下:DMZ:就相当于DNAT(Destination NAT),只对目的IP地址做地址转换.也就是说,收到目的IP为自己WAN口的包,统统转发给内网的 ...
- elasticsearch 基本用法
最大的特点: 1. 数据库的 database, 就是 index 2. 数据库的 table, 就是 tag 3. 不要使用browser, 使用curl来进行客户端操作. 否则会出现 jav ...
- mysql double 乘法 缺失精度
CREATE TABLE tmp_decimal( id BIGINT auto_increment PRIMARY KEY , amount DOUBLE ); 创建测试表 插入测试数据 INSER ...
- 如何检测一个aspx页面的速度慢的原因
最近读到一篇文章,是关于如何提高一个aspx页面的速度.这是一个常见的面试问题.该问题原文出自这个网站. 出现这个问题的原因会多种多样,我们需要一步一步的排查来定位问题真正出现在哪里. 1. 找出那一 ...