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的更多相关文章

  1. 匿名函数中undefined形参疑问(转载)

    唉,基本功不扎实,昨天在微博上问了个问题,就匿名函数中undefined形参,不知道是干什么用的. 经常看到这样的匿名函数代码: ;(function( $, window, document,und ...

  2. Pyhton函数篇(一)之函数中的形参与实参

    1:什么是函数 函数其实就是带名字的代码块,用于完成一些具体的工作.如果我们在写一段程序的时候,需要多次用到同样的一个功能,如果每次都要重复写相同的代码,不仅会增加我们的代码量,更会让我们写出的代码让 ...

  3. tf.placeholder类似函数中的形参

    tf.placeholder(dtype, shape=None, name=None) 此函数可以理解为形参,用于定义过程,在执行的时候再赋具体的值 参数: dtype:数据类型.常用的是tf.fl ...

  4. element-ui(vue版)使用switch时change回调函数中的形参传值问题

    需求说明 有多个switch组件 需要知道switch的状态 表格中当前行(scope.row)的数据 问题描述 官方文档中对switch中change的描述: 目前能得到switch的状态值,但是无 ...

  5. (3)什么是函数(函数的定义、形参、实参、默认形参、可变长函数args|kwargs)

    什么是函数 函数是指将一组语句的集合通过一个名字(函数名)封装起来,想要执行这个函数,只需调用其函数名即可 1.减少重复代码 2.使程序变的可扩展 3.使程序变得易维护 定义函数的语法 形参 主要的作 ...

  6. (转)Java程序利用main函数中args参数实现参数的传递

    Java程序利用main函数中args参数实现参数的传递 1.运行Java程序的同时,可以通过输入参数给main函数中的接收参数数组args[],供程序内部使用!即当你在Java命令行后面带上参数,J ...

  7. 一道题带你搞定Python函数中形参和实参问题

    昨天在Python学习群里有位路人甲问了个Python函数中关于形参和实参一个很基础的问题,虽然很基础,但是对于很多小白来说不一定简单,反而会被搞得稀里糊涂.人生苦短,我用Python. 为了解答大家 ...

  8. Python3 函数进阶1

    目录 闭包函数 什么是闭包函数 闭包函数的作用 装饰器 什么是装饰器 无参装饰器 有参装饰器 闭包函数 什么是闭包函数 闭包函数本质上就是函数嵌套和高阶函数 闭包函数的满足条件: 必须嵌套函数 内嵌函 ...

  9. C指针(2)——指针在函数中的应用(程序讲解)

    3-1.c指针用作函数参数 #include<stdio.h> typedef unsigned char uint8_t; //类型自定义,通过typedef语句重新把unsigned ...

随机推荐

  1. each of which 用法

    each of which 在以下為 同位語,非關代. 1. An urn contains two balls, each of which is known to be either white ...

  2. 【Vue 2.X】基于input[type='number']封装parseFloat、parseInt-自定义指令系列(一)

    一.parseFloat 效果:限制负值输入,且输入值不为空时自动保留两位小数,等同于js的parseFloat(value).toFixed(2) 使用:与v-model配合使用,v-parseFl ...

  3. Solr的学习使用之(二)schema.xml等配置文件的解析

    上一篇文章已经讲解了如何部署Solr,部署是部署完了,可是总觉得心里空空的,没底,里面有N多配置文件,比如schema.xml.solrConfig.xml.solr.xml and so on……都 ...

  4. 通用的规则匹配算法(原创)(java+.net)

    1.java里可以使用Spring的 Spel或者Google的Aviator 如果使用 Aviator 则添加以下依赖 <dependency> <groupId>com.g ...

  5. 关于javascript提交到java后台空格去不掉ASCII为160的解决办法

    今天正则表达式匹配一个字符串,怎么都不对. 用正则表达式去掉尝试str.replaceAll("\\s*","");  在或者用replaceAll(" ...

  6. 1、pip不是内部运行程序 解决方法

    一.方式一 1.切换到pip所在路径: shit+ 右键. 再此处打开运行窗口 2.执行 pip install pytest 脚本即可. 二.方式二,添加环境变量 1.将pip所在的文件路径 添加到 ...

  7. hdu4336 Card Collector MinMax 容斥

    题目传送门 https://vjudge.net/problem/HDU-4336 http://acm.hdu.edu.cn/showproblem.php?pid=4336 题解 minmax 容 ...

  8. 配置jdpc连接池对象

  9. Git使用包括切换分支

  10. pyCharm和解释器下载安装

    参考:(mac) 安装流程和注意: http://blog.csdn.net/limin2928/article/details/69267184 解释器下载地址: https://www.pytho ...