python *args **kwargs,传入不固定的参数给函数,或者传入很多的内容给函数,常用在构造函数中。
'''
例1:展示*args的用法,传入多个参数,不进行预先定义。
本例传入了3个参数。没有预先定义。在函数内自动生成元组()
'''
def q1(*args):
print('例1')
print(args)
print(type(args))
print(args[0])
t1 = 123
t2 = 234
t3 = 345
q1(t1, t2, t3)
print('-----------------')
'''
例2,和例1一样,但是传入字符串,元组,列表,都会在函数内生成元组()
注意引入参数时要有*号,
没有星号,函数把你传入的参数列表(元组,字符串)当作一个参数来处理。
有星号时,函数把你传入的参数列表(元组,字符串)当作多个参数来处理,在函数内生成元组()
如最后一个调用q2(t3)
'''
def q2(*args):
print('例2')
print(args)
print(type(args))
print(args[0])
t1 = 123,234,345
q2(*t1)
t2 = (234,345,456)
q2(*t2)
t3=[345,456,567]
q2(*t3)
q2(t3)
print('-----------------')
'''
例3,本例展示使用**kwargs,传入字典,函数内同样还是字典。
'''
def q3(**kwargs):
print('例3')
print(kwargs)
print(type(kwargs))
print(kwargs['name1'])
di = {
'name1': 'jack',
'name2': 'rose',
}
q3(**di)
print('-----------------')
'''
例4:本例展示,函数定义时,可以同时使用*args,**kwargs来定义函数。
但是引用时,可以分开引用,只引用*args,或只引用**kwargs,暂时屏蔽函数内对元组和字典的使用,避免报错。
'''
def q4(*args,**kwargs):
print('例4')
print(args)
# print(args[0])
print(kwargs)
# print(kwargs.get('name1'))
t1 = 123,234,345
di = {
'name1': 'jack',
'name2': 'rose',
}
q4(*t1)
print('---')
q4(**di)
print('-----------------')
'''
例5,本例展示同时定义*args,**kwargs,并且同时使用。
'''
def q5(*args,**kwargs):
print('例5')
print(args)
print(args[0])
print(kwargs)
print(kwargs.get('name1'))
t1 = 123,234,345
di = {
'name1': 'jack',
'name2': 'rose',
}
q5(*t1,**di)
print('-----------------')
'''
例6,本例展示把*args,作为多余的参数传入函数,也是看代码经常看到的。
'''
def q6(t1,t2,*args):
print('例6')
print(t1)
print(t2)
print(args)
print(args[0])
t1 = 123,234,345
q6('t123','t234',*t1)
print('-----------------')
'''
例7,本例展示把**kwargs,作为多余的参数传入函数,也是看代码经常看到的。
'''
def q7(k1,k2,**kwargs):
print('例7')
print(k1)
print(k2)
print(kwargs)
print(kwargs.get('name1'))
pass
di = {
'name1': 'jack',
'name2': 'rose',
}
q7(k1='t123',k2='t234',**di)
print('-----------------')
'''
例8,本例展示把*args,**kwargs共同使用,作为多余的参数传入函数,也是看代码经常看到的。
除函数定义的k1,k2,又在引用时,加入了 't345',k3=1,
结果
t123 (k1)
t234 (k2)
('t345', 123, 234, 345) (args)
{'k3': 1, 'k4': 2, 'name1': 'jack', 'name2': 'rose'} (kwargs)
jack kwargs['name1']
'''
def q8(k1,k2,*args,**kwargs):
print('例8' )
print(k1)
print(k2)
print(args)
print(kwargs)
print(kwargs.get('name1'))
pass
t1 = 123,234,345
di = {
'name1': 'jack',
'name2': 'rose',
}
q8('t123','t234','t345',k3=1,k4=2,*t1,**di)
print('-----------------')
基本上也就这么多了。
python *args **kwargs,传入不固定的参数给函数,或者传入很多的内容给函数,常用在构造函数中。的更多相关文章
- python args kwargs 传递参数的区别
先来看个例子: def foo(*args, **kwargs): print 'args = ', args print 'kwargs = ', kwargs print '----------- ...
- python *args **kwargs
简单来说,当你传入的参数不能确定是几个的时候会用到 *args和**kwargs,这里星号后边只是个代号,你写成a也可以. 而这两者的区别是 如果是键值对就要用后者,反之前者就可以. 同时还可以用(a ...
- Python args **kwargs作用
python当函数的参数不确定时,可以使用*args和**kwargs,*args用于捕获所有no keyword参数,它是一个tuple.**kwargs捕获所有keyword参数,它是一个dict ...
- python *args,**kwargs用法
*args用于接受传入的值,无限制,但是不能接收key类型的,如c=2 def fun(*args): for i in args: print(i) print("test") ...
- Python args kwargs 技巧
def f(*args): print(args) a=[1, 2, 3] f(a) f(*a) 运行结果: ([1, 2, 3],) (1, 2, 3) def f(**kwargs): print ...
- Python面试题之这两个参数是什么意思:*args,**kwargs?我们为什么要使用它们?
如果我们不确定要往函数中传入多少个参数,或者我们想往函数中以列表和元组的形式传参数时,那就使要用*args: 如果我们不知道要往函数中传入多少个关键词参数,或者想传入字典的值作为关键词参数时,那就要使 ...
- Python 第三篇(上):python文件基础操作、json模块、lambda、map、filter、reduce和函数位置参数
python一切皆对象,linux一切皆文件,python操作文件是很常见的O/I操作,其内置来open()函数可以完成文件的基本操作: 一:使用内置open()函数操作文件,基本语法如下: with ...
- python之动态参数 *args,**kwargs和命名空间
一.函数的动态参数 *args,**kwargs, 形参的顺序1.你的函数,为了拓展,对于传入的实参数量应该是不固定,所以就需要用到万能参数,动态参数,*args, **kwargs 1,*args ...
- python的函数介绍 位置参数 关键字参数 默认参数 参数组 *args **kwargs
1.数学意义的函数与python中的函数 数学意义的函数 y = 2*3+1 x =3 y =7 x是自变量,y是因变量 2.python中定义函数的方法 一个函数往往都是为了完成一个特定的功能而存在 ...
随机推荐
- 【建表】ElasticSearch建表命令
使用google插件Postman 发送方式为PUT,url地址: 192.168.2.11:9200/IndexName 文本raw,数据为json格式 { "settings" ...
- BZOJ1045 [HAOI2008]糖果传递 && BZOJ3293 [Cqoi2011]分金币
Description 有n个小朋友坐成一圈,每人有ai个糖果.每人只能给左右两人传递糖果.每人每次传递一个糖果代价为1. Input 第一行一个正整数nn<=1'000'000,表示小朋友的个 ...
- java 如果仅输出一位和要输出多位格式的输出问题,利用boolean值.
package com.ykmimi.testtest; /** * 第七周第二题,来自网络 */ import java.util.Scanner; public class NumberPerfe ...
- git连接华为开发云devcloud
华为开发运在代码托管方面的个github很类似,引入了代码仓库的概念,同时需要本地安装git客户端,且只能与git进行连接,从这个角度上讲,华为开发云的代码管理部分就是github的功能,下面对git ...
- shell case语句
case 格式 case 值 in 模式1) command1 command2 ... commandN ;; 模式2) command1 command2 ... commandN ;; esac ...
- 安装 mysql8.0.13 (Ubuntu 16.04 desktop amd64)
1.下载mysql deb https://dev.mysql.com/downloads/mysql/ #移动到/usr/local/src/目录,解压 sudo mv mysql-server_8 ...
- JS + flash 复制
js代码ZeroClipboard组件制作复制剪切板复制粘贴文字内容,一键即可复制粘贴文字内容.兼容各大主流浏览器firefox,,Chrome,IE等. 演示代码 如下: <script ty ...
- python里的apply,applymap和map的区别
apply,applymap和map的应用总结: apply 用在dataframe上,用于对row或者column进行计算: applymap 用于dataframe上,是元素级别的操作: map ...
- Oracle数据库常见版本
Oracle数据库常见版本 在Oracle数据库的发展中,数据库一直处于不断升级状态,有以下几个版本: Oracle 8,Oracle 8i:Oracle 8i表示Oracle正式向Internet上 ...
- 通过 sqldf 包使用 SQL 查询数据框
在前面的章节中,我们学习了如何编写 SQL 语句,在关系型数据库(如 SQLite 和MySQL )中查询数据.我们可能会想,有没有一种方法,能够直接使用 SQL 进行数据框查询,就像数据框是关系型数 ...