Python3函数中特殊形参的使用:*、*args、**kwargs
Python3函数中特殊形参的使用:*、*args、**kwargs
==用法1:不定长参数==
当函数需要的参数数量不确定的时候,可以使用*args 和 **kwargs ,
所有的位置参数保存在*args中,以元组的形式保存,调用时直接用args,不需要带 *
所有的关键参数保存在**kwargs中,以字典的形式保存,调用时也直接使用kwargs
#demo1:
def func(*args, **kwargs):
print(args)
print(kwargs)
func("jack", 18, "male")
#output:
('jack', 18, 'male')
{}
调用时没有使用关键参数,所以kwargs字典里面是空
#demo2:
def func(*args, **kwargs):
print(args)
print(kwargs)
func(name="jack", age=18, sex="male")
#output:
()
{'name': 'jack', 'age': 18, 'sex': 'male'}
调用时没有使用位置参数,所以args元组里面是空,且使用的关键字名不用出现在函数定义的参数列表里
#demo3:
def func(*args, **kwargs):
print(args)
print(kwargs)
func("jack", 18, sex="male")
# func(name="jack", 18,"male") 调用时报错
#output:
('jack', 18)
{'sex': 'male'}
调同时使用位置参数和关键参数,关键参数要放在位置参数后,否则会报错
==注意:==
- *args 和 **kwargs里面的参数名args、kwargs可以为任何变量名,约定俗成用args和kwargs
==用法2:* 和 *para 后的参数调用时必须是关键参数==
#demo1:
def func(x, *, y):
print(x, y)
func(3, y=5)
func(x=3, y=5)
# func(x=3, 5) 报错
# func(3, 5) 报错
#output:
3 5
3 5
* 之后的参数调用必须是关键参数,* 之前的不限制,
如果 * 放在参数列表的第一个,则后面的参数都必须用关键参数
#demo2:
def func(x, *para, y):
print(x, para, y)
func(3, 4, y=5)
#output:
3 (4,) 5
Python3函数中特殊形参的使用:*、*args、**kwargs的更多相关文章
- 匿名函数中undefined形参疑问(转载)
唉,基本功不扎实,昨天在微博上问了个问题,就匿名函数中undefined形参,不知道是干什么用的. 经常看到这样的匿名函数代码: ;(function( $, window, document,und ...
- Pyhton函数篇(一)之函数中的形参与实参
1:什么是函数 函数其实就是带名字的代码块,用于完成一些具体的工作.如果我们在写一段程序的时候,需要多次用到同样的一个功能,如果每次都要重复写相同的代码,不仅会增加我们的代码量,更会让我们写出的代码让 ...
- tf.placeholder类似函数中的形参
tf.placeholder(dtype, shape=None, name=None) 此函数可以理解为形参,用于定义过程,在执行的时候再赋具体的值 参数: dtype:数据类型.常用的是tf.fl ...
- element-ui(vue版)使用switch时change回调函数中的形参传值问题
需求说明 有多个switch组件 需要知道switch的状态 表格中当前行(scope.row)的数据 问题描述 官方文档中对switch中change的描述: 目前能得到switch的状态值,但是无 ...
- (3)什么是函数(函数的定义、形参、实参、默认形参、可变长函数args|kwargs)
什么是函数 函数是指将一组语句的集合通过一个名字(函数名)封装起来,想要执行这个函数,只需调用其函数名即可 1.减少重复代码 2.使程序变的可扩展 3.使程序变得易维护 定义函数的语法 形参 主要的作 ...
- (转)Java程序利用main函数中args参数实现参数的传递
Java程序利用main函数中args参数实现参数的传递 1.运行Java程序的同时,可以通过输入参数给main函数中的接收参数数组args[],供程序内部使用!即当你在Java命令行后面带上参数,J ...
- 一道题带你搞定Python函数中形参和实参问题
昨天在Python学习群里有位路人甲问了个Python函数中关于形参和实参一个很基础的问题,虽然很基础,但是对于很多小白来说不一定简单,反而会被搞得稀里糊涂.人生苦短,我用Python. 为了解答大家 ...
- Python3 函数进阶1
目录 闭包函数 什么是闭包函数 闭包函数的作用 装饰器 什么是装饰器 无参装饰器 有参装饰器 闭包函数 什么是闭包函数 闭包函数本质上就是函数嵌套和高阶函数 闭包函数的满足条件: 必须嵌套函数 内嵌函 ...
- C指针(2)——指针在函数中的应用(程序讲解)
3-1.c指针用作函数参数 #include<stdio.h> typedef unsigned char uint8_t; //类型自定义,通过typedef语句重新把unsigned ...
随机推荐
- each of which 用法
each of which 在以下為 同位語,非關代. 1. An urn contains two balls, each of which is known to be either white ...
- 【Vue 2.X】基于input[type='number']封装parseFloat、parseInt-自定义指令系列(一)
一.parseFloat 效果:限制负值输入,且输入值不为空时自动保留两位小数,等同于js的parseFloat(value).toFixed(2) 使用:与v-model配合使用,v-parseFl ...
- Solr的学习使用之(二)schema.xml等配置文件的解析
上一篇文章已经讲解了如何部署Solr,部署是部署完了,可是总觉得心里空空的,没底,里面有N多配置文件,比如schema.xml.solrConfig.xml.solr.xml and so on……都 ...
- 通用的规则匹配算法(原创)(java+.net)
1.java里可以使用Spring的 Spel或者Google的Aviator 如果使用 Aviator 则添加以下依赖 <dependency> <groupId>com.g ...
- 关于javascript提交到java后台空格去不掉ASCII为160的解决办法
今天正则表达式匹配一个字符串,怎么都不对. 用正则表达式去掉尝试str.replaceAll("\\s*",""); 在或者用replaceAll(" ...
- 1、pip不是内部运行程序 解决方法
一.方式一 1.切换到pip所在路径: shit+ 右键. 再此处打开运行窗口 2.执行 pip install pytest 脚本即可. 二.方式二,添加环境变量 1.将pip所在的文件路径 添加到 ...
- hdu4336 Card Collector MinMax 容斥
题目传送门 https://vjudge.net/problem/HDU-4336 http://acm.hdu.edu.cn/showproblem.php?pid=4336 题解 minmax 容 ...
- 配置jdpc连接池对象
- Git使用包括切换分支
- pyCharm和解释器下载安装
参考:(mac) 安装流程和注意: http://blog.csdn.net/limin2928/article/details/69267184 解释器下载地址: https://www.pytho ...