(十五)python3 可变长参数(arg,*args,**kwargs)
可变长参数(*args,**kwargs)
一、最常见的是在定义函数时,预先并不知道, 函数使用者会传递多少个参数给你, 所以在这个场景下使用这两个关键字。其实并不是必须写成*args 和**kwargs。 *(星号)才是必须的. 你也可以写成*ar 和**k. 而写成*args 和**kwargs只是一个通俗的命名约定.分别代表的是元组和字典
def x(arg, *args, **kwargs):
print('arg--> {}'.format(arg))
print('args--> {} '.format(args))
print('kwarg--> {} '.format(kwargs)) x(1,2,3,4,key1="value1") #结果
# arg--> 1
# args--> (2, 3, 4)
# kwarg--> {'key1': 'value1'}
在函数调用时,位置参数传递必须在关键字参数左边或者说前面,**kwargs接收关键字参数,生成字典。*args接收除第一个位置参数和关键字参数外的其它参数生成元组,根参数是什么数据类型无关。
def x(arg, *args, **kwargs):
print('arg--> {}'.format(arg))
print('args--> {} '.format(args))
print('kwarg--> {} '.format(kwargs)) x(1,(2,3,),4,key1="value1") #arg--> 1
#args--> ((2, 3), 4)
#kwarg--> {'key1': 'value1'}
二、函数调用时使用*args、**args
下面方式调用应该不难理解
def print_info(name,age,sex):
print('name--> {}'.format(name))
print('age--> {} '.format(age))
print('sex--> {} '.format(sex)) print_info("name1",25,"男") #name--> name1
# age--> 25
# sex--> 男
换个方式:*args,**kwargs
def print_info(name, age, sex):
print('name--> {}'.format(name))
print('age--> {} '.format(age))
print('sex--> {} '.format(sex)) list = ["李刚", 20, "男"] dic = {"name": "王某某", "age": 30, "sex": "女",} print_info(*list) # 将列表或元组前加“*”并传组函数,(注意:元素个数与位置必须对应)结果如下。
# name--> 李刚
# age--> 20
# sex--> 男 print_info(**dic)
# 同样在传入的字典前加上“**”,此时字典会被解析成key=value的形式。注意key值和个数不能大于形参,结果如下 # name--> 王某某
# age--> 30
# sex--> 女
综合一下:
print_info("小刚",age=18,**{"sex":"男"})
#
name--> 小刚
age--> 18
sex--> 男
(十五)python3 可变长参数(arg,*args,**kwargs)的更多相关文章
- [python][oldboy]关键字参数和位置参数,默认参数,可变长参数(无名,有名)
关键字参数和位置参数是在函数调用的时候定义 关键字参数是以键-值对出现,无序,多一个不行,少一个不行 位置参数,有序,多一个不行,少一个不行 混搭:所有位置参数必须在关键字参数的左边 默认参数是在函数 ...
- CSIC_716_20191109【函数的语法,以及函数的分类,可变长参数*args】
函数 定义.作用.及使用方式 函数是一种工具,可以被重复调用. 使用函数可精简重复代码,减少冗余,增加代码的可读性. 函数要先构造函数,然后调用函数. 构造及调用函数的语法结构 关键字def 函数名 ...
- 详解Python函数参数定义及传参(必备参数、关键字参数、默认可省略参数、可变不定长参数、*args、**kwargs)
详解Python函数参数定义及传参(必备参数.关键字参数.默认可省略参数.可变不定长参数.*args.**kwargs) Python函数参数传参的种类 Python中函数参数定义及调用函数时传参 ...
- python中非关键字可变长参数和关键字变量参数的区别
#非关键字可变长参数 def add(*arg): return type(arg) print add() #打印结果 <type 'tuple'> #关键字变量参数 def ab ...
- Noah的学习笔记之Python篇:函数“可变长参数”
Noah的学习笔记之Python篇: 1.装饰器 2.函数“可变长参数” 3.命令行解析 注:本文全原创,作者:Noah Zhang (http://www.cnblogs.com/noahzn/) ...
- java中可变长参数
** * Created by Lenovo on 2017/12/10. * java中可变长参数 */ public class reflect04 { //m1有一个int类型的可比变长参数 / ...
- go实例—函数或方法的可变长参数
支持可变长参数列表的函数可以支持任意个传入参数,比如fmt.Println函数就是一个支持可变长参数列表的函数. 需要注意的是,可变长参数应该是函数定义的最右边的参数,即最后一个参数 package ...
- 【0809 | Day 12】可变长参数/函数的对象/函数的嵌套/名称空间与作用域
可变长参数 一.形参 位置形参 默认形参 二.实参 位置实参 关键字实参 三.可变长参数之* def func(name,pwd,*args): print('name:',name,'pwd:',p ...
- python基础语法5 函数定义,可变长参数
函数 1.什么是函数 函数就是一种工具. 可以重复调用 2.为什么要用函数 1.防止代码冗(rong)余 2.代码的可读性差 3.怎么用函数 1.定义函数-->制造工具 2.调用函数--> ...
随机推荐
- 51nod 1227 平均最小公倍数【欧拉函数+杜教筛】
以后这种题能用phi的就不要用mu-mu往往会带着个ln然后被卡常致死 把题目要求转换为前缀和相减的形式,写出来大概是要求这样一个式子: \[ \sum_{i=1}^{n}\sum_{j=1}^{i} ...
- C#后台调用Http外网接口(GET, POST)
1.get方法调用接口获取json文件内容 public void GetFunction() { string serviceAddress = ...
- 爬虫—Requests高级用法
Requests高级用法 1.文件上传 我们知道requests可以模拟提交一些数据.假如有的网站需要上传文件,我们也可以用requests来实现. import requests files = { ...
- 传统的线程互斥技术:Synchronized关键字
多个线程操作同一个方法或变量时常常出现错误,要保证每个线程都正常运行就要通过加锁,每次只有一个能够拿到锁通过.如下: package cn.sp.thread; /** * Created by 2Y ...
- 安装 Spring 框架库
下载地址:http://repo.spring.io/release/org/springframework/spring
- hdu 2063 过山车 (最大匹配 匈牙利算法模板)
匈牙利算法是由匈牙利数学家Edmonds于1965年提出,因而得名.匈牙利算法是基于Hall定理中充分性证明的思想,它是部图匹配最常见的算法,该算法的核心就是寻找增广路径,它是一种用增广路径求二分图最 ...
- 水题 Codeforces Round #306 (Div. 2) A. Two Substrings
题目传送门 /* 水题:遍历一边先找AB,再BA,再遍历一边先找BA,再AB,两种情况满足一种就YES */ #include <cstdio> #include <iostream ...
- 题解报告:poj 3061 Subsequence(前缀+二分or尺取法)
Description A sequence of N positive integers (10 < N < 100 000), each of them less than or eq ...
- CentOS 6.5使用:[3]使用xftp传递文件
先检查CentOS系统是否安装了FTP服务 [root@centos ~]# rpm -qa | grep vsftpd 如果有内容输出,那么恭喜你,你的系统已经安装了ftp服务 如果没有那么按照 ...
- Zclip点击复制内容到剪贴板兼容各浏览器
WEB开发中,要让用户复制页面中的一段代码.URL地址等信息,为了避免用户拖动鼠标再进行右键复制操作而可能出现的差错,我们可以直接在页面中放置一个复制按钮,只需要轻轻一点这个复制按钮,内容将会被复制, ...