python--函数--参数传入分类
1. 位置参数
调用函数时传入实际参数的数量和位置都必须和定义函数时保持一致。
2. 关键字参数
好处:不用记住形参位置。
所谓关键字就是“键-值”绑定,调用函数时,进行传递。
特点:位置参数和关键字参数混合传参时,位置参数必须在关键字参数的前面,关键字参数之间不存在先后顺序。
3. 默认参数
好处:调用函数时可以不指定某个参数,使用默认值。
当定义一个有默认值参数的函数时,有默认值的参数必须位于所有没默认值参数的后面。默认参数一定要用不可变对象,如果是可变对象,程序运行时会有逻辑错误!
使用“函数名.__defaults__”查看函数的默认值参数的当前值,其返回值是一个元组。
4. 可变参数(*args,**kwargs)
1. *args是arguments单词缩写,表示任意多个无名参数,是一个tuple,如 (1,2,3,'a','b','c')。*位置参数。
2. **kwargs是keyword arguments单词缩写,表示关键字参数,是一个dict,如{'a':1,'b':2,'c':3}。**关键字参数。
# coding:utf-8 def foo(*args,**kwargs):
print('args=',args)
print('kwargs=',kwargs)
print('*'*20) if __name__=='__main__':
#只传参数*args=(1,2,3)
foo(1,2,3) #只传参数**kwargs=dict(a=1,b=2,c=3)
foo(a=1,b=2,c=3) #传入参数*args=(1,2,3)
#传入参数**kwargs=dict(a=1,b=2,c=3)
foo(1,2,3,a=1,b=2,c=3) #传入参数*args=(1,'b','c')
#传入参数**kwargs=dict(a=1,b='b',c='c')
foo(1,'b','c',a=1,b='b',c='c')
输出:
args= (1, 2, 3)
kwargs= {}
********************
args= ()
kwargs= {'a': 1, 'c': 3, 'b': 2}
********************
args= (1, 2, 3)
kwargs= {'a': 1, 'c': 3, 'b': 2}
********************
args= (1, 'b', 'c')
kwargs= {'a': 1, 'c': 'c', 'b': 'b'}
********************
当同时使用*args和**kwargs时,*args参数必须在**kwargs前。否则会提示语法错误"SyntaxError: non-keyword arg after keyword arg"。
调用函数时如何传入可变参数和关键字参数的语法:
可变参数既可以直接传入:func(1, 2, 3),又可以先组装list或tuple,再通过*args传入:func(*(1, 2, 3));
关键字参数既可以直接传入:func(a=1, b=2),又可以先组装dict,再通过**kw传入:func(**{'a': 1, 'b': 2})。
其余参考:https://www.cnblogs.com/bingabcd/p/6671368.html
python--函数--参数传入分类的更多相关文章
- Python函数参数默认值的陷阱和原理深究"
本文将介绍使用mutable对象作为Python函数参数默认值潜在的危害,以及其实现原理和设计目的 本博客已经迁移至: http://cenalulu.github.io/ 本篇博文已经迁移,阅读全文 ...
- python函数参数的pack与unpack
python函数参数的pack与unpack 上周在使用django做开发的时候用到了mixin(关于mixin我还要写一个博客专门讨论一下,现在请参见这里),其中又涉及到了一个关于函数参数打包(pa ...
- python 函数参数介绍
python 函数参数介绍 python 使用过程总,总会遇到 *args,**kw形式的参数,总是一头雾水,而且网上介绍的或是叫法不一,为此专门深入实践进而了解了函数参数的使用 具体请看代码 #-* ...
- python函数参数类型及其顺序
根据inspect模块官文文档中关于函数参数类型的相关说明,python函数参数共有五种类型,按顺序分别为:POSITIONAL_ONLY.POSITIONAL_OR_KEYWORD.VAR_POSI ...
- python函数-参数
python函数-参数 实验室 # 演示形参是可变类型 def register(name, hobby, hobby_list=[]): hobby_list.append(hobby) print ...
- 详解Python函数参数定义及传参(必备参数、关键字参数、默认可省略参数、可变不定长参数、*args、**kwargs)
详解Python函数参数定义及传参(必备参数.关键字参数.默认可省略参数.可变不定长参数.*args.**kwargs) Python函数参数传参的种类 Python中函数参数定义及调用函数时传参 ...
- Python函数参数详解
Python函数参数详解 形参与实参 什么是形参 在定义函数阶段定义的参数称之为形式参数,简称形参,相当于变量名. 什么是实参 在调用函数阶段传入的值称为实际参数,简称实参.相当于"变量值& ...
- Python 关于Python函数参数传递方式的一点探索
关于Python函数参数传递方式的一点探索 by:授客 QQ:1033553122 实践代码 #!/usr/bin/env python # -*- coding:utf-8 -*- __author ...
- Python 函数参数类型大全(非常全!!!)
Python 函数参数类型大全(非常全!!!) 1.在python编写程序里面具有函数文档,它的主要作用是为了让别人可以更好的理解你的函数,所以这是一个好习惯,访问函数文档的方式是: MyFuncti ...
- Python函数参数默认值的陷阱和原理深究(转)
add by zhj: 在Python文档中清楚的说明了默认参数是怎么工作的,如下 "Default parameter values are evaluated when the func ...
随机推荐
- 一键解决Win10 LTSC 2021官方镜像存在的问题
一键解决Win10 LTSC 2021官方镜像存在的问题 由于适用了win10 ltsc 2021之后,发现官方镜像存在一些致命的bug.但是本人又喜欢这个官方精简的系统,所以进行了一些修复.并将搜集 ...
- FinClip小程序+Rust(三):一个加密钱包
一个加密货币钱包,主要依赖加密算法构建.这部分逻辑无关iOS还是Android,特别适合用Rust去实现.我们看看如何实现一个生成一个模拟钱包,准备供小程序开发采用 前言 在之前的内容我们介绍了整 ...
- 6. ZigZag Conversion - LeetCode
Question 6. ZigZag Conversion Solution 题目大意:将字符串按Z字型排列,然后再一行一行按字符输出 思路:按题目中的第一个例子,画出如下图,通过n的不同值,可以找出 ...
- Stream.toList()和Collectors.toList()的性能比较
昨天给大家介绍了Java 16中的Stream增强,可以直接通过toList()来转换成List. 主要涉及下面这几种转换方式: list.stream().toList(); list.stream ...
- Unity-自定义事件派发器的两次尝试
一.前言: 在游戏开发的很多时候,需要引用其他类的方法,但是一旦类多起来了,相互引用会导致引用关系混乱,极其难以阅读. 以前初次做抖音小游戏时,和一位经验老道的cocos程序员合作,看到我写的代码他不 ...
- 4. Docker自定义镜像
下面制作镜像: 此时,验证一下: 以上验证都是成功的,到此就可以把刚才建立并经过刚才运行并验证的镜像包通过各种方式传递给其他人来部署使用了,并且环境肯定是可你统一的.
- 技术分享 | app自动化测试(Android)--高级定位技巧
原文链接 XPath高级定位技巧 XPath 简介 XPath 的英文全称为:XML Path Language,意旨对 XML 中的元素进行路径定位的一种语言,它可适用 XML 标记语言,Html ...
- 写个js获取2019博客之星投票活动的名次与投票数
获取投票数 // app.jsvar request = require('request');var cheerio = require('cheerio');request('http://m23 ...
- SAP Web Dynpro-使用服务调用
创建服务调用后,功能模块可用于组件. 现在可以选择一个视图,以便在浏览器中显示数据库表的元素. 如果全局控制器不是组件控制器,则必须为所选视图的控制器输入全局控制器的使用页面. 之后,应该有该节点的映 ...
- SAP 上传 函数 ALSM_EXCEL_TO_INTERNAL_TABLE 不稳定
ALSM_EXCEL_TO_INTERNAL_TABLE 这个函数的使用率非常高,然而有时候,它非常的不稳定,有时没有填充excel数据. 1.建议用户在开始运行界面程序之前先关闭Outlook. 2 ...