'''
例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 传递参数的区别
先来看个例子: 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中定义函数的方法 一个函数往往都是为了完成一个特定的功能而存在 ...
随机推荐
如何在Ubuntu上安装最新版本的Node.js
apt-get update apt-get install -y python-software-properties software-properties-common add-apt-repo ...
基于bootstrap面板的类别多选栏
1.html部分
C#Css/Js静态文件压缩--Yui.Compressor.Net
一.Asp.Net 自带静态文件压缩工具包 Microsoft.AspNet.Web.Optimization http://www.nuget.org/packages/Microsoft.AspN ...
PowerDesigner使用常见问题
1.在数据库生成表的时候,要求PowerDesigner中设计的表的Name的值要放到数据库中表的描述中,而不是PowerDesigner 中字段的Comment: 具体方法如下:首先将PowerDe ...
读写分离提高 SQL Server 并发性
转自:http://www.canway.net/Lists/CanwayOriginalArticels/DispForm.aspx?ID=476 在一些大型的网站或者应用中,单台的SQL Serv ...
cookie和session的区别(搜狐笔试考到的一个题目)
一.cookie机制和session机制的区别***************************************************************************** ...
java 多线程 23 : Timer
前言 定时/计划功能在Java应用的各个领域都使用得非常多,比方说Web层面,可能一个项目要定时采集话单.定时更新某些缓存.定时清理一批不活跃用户等等.定时计划任务功能在Java中主要使用的就是Tim ...
c#基础学习(0724)之可变参数、ref和out
params可变参数,无论有几个参数,必须出现在参数列表的最后,可以为可变参数直接传递一个对应类型的数组 #region 可变参数 //1.如果方法有多个参数,可变参数可以作为最后一个参数 //2.可 ...
win32多线程 (一) 线程创建与结束等待
#include "stdafx.h"#include #include using namespace std ...
基于WPF系统框架设计(9)-多值绑定之IMultiValueConverter
应用场景 我想把View层的一个布局控件和功能按钮传到ViewModel层,达到动态变更布局,同时灵活获取功能按钮的属性,让View和ViewModel完全分离,而不受View层影响. 最后我想到使用 ...