关于python函数传参
必须参数
最常见的传参
def say(arg):
print(arg)
say("Hello world")
输出:
Hello world
默认参数
def say(arg, arg2="world"):
print(arg + arg2)
say("Hello")
输出:
Helloworld
默认参数的要求:
1.默认参数在函数定义的时候传入默认值
2.默认参数要在必须参数后面,不能默认参数在必须参数之前
我们一般调用函数的时候一般就是采用,必须参数正常传递,然后默认参数采用关键字传参的办法例如:
requests.get(url,allow_redirects=False)
这个例子是requests
禁止重定向需要传递的一个参数
因为默认参数一般都是特别多,而且不需要每次调用的时候都自己传递,只有遇到特殊需求的时候进行更改
关于*args和*kwargs的使用方法
例子:
def test(a,*args,**kwargs):
print(a,args,kwargs)
test(1,2,3,4,c=5,d=6)
输出:
1 (2, 3, 4) {'c': 5, 'd': 6}
我相信很多文章都说了,形参的顺序不能变化,必须是 test(a,*args,**kwargs)
这样一个顺序
形参a是必须参数,必须参数必须有相应的实参对应,其余的赋给 *args
并形成一个元祖 ,剩余采用关键字传参的都付给 **kwargs
并形成一个字典
说几个其余文章没有提到的:
*args, **kwargs不是固定的变量名,哪怕形参叫
fuck
也是可以运行的,带几个*
才是区分这几个参数的关键这三种类型的参数只有必须参数必须传递,其余的参数都可以不传递
例如:不传递 *argsdef test(a,*args,**kwargs):
print(a,args,kwargs)
test(1,c=5,d=6)
输出:
1 () {'c': 5, 'd': 6}
不传递 **kwargs参数
def test(a,*args,**kwargs):
print(a,args,kwargs)
test(1,2,3,4)
输出:
1 (2, 3, 4) {}
这几种类型的参数不只是在函数定义中可以使用,函数调用的时候也可以使用
def a(b,c):
print(b,c) dict_ = dict(
b = 1,
c=2
) a(**dict_)
输出:
1 2
不过需要注意,字典的键必须对应形参的名字
def a(b,c):
print(b,c) tuple_ = (1,2)
a(*tuple_)
输出:
1 2
其实归根结底这些都是拆包
关于python函数传参的更多相关文章
- python函数传参
之前一直没有注意过该问题,在leetcode144中写递归发现该问题,不知道递归函数传参是指针还是引用. 参考:http://c.biancheng.net/view/2258.html 如果是不可变 ...
- python -- 函数传参
一.参数传入规则 可变参数允许传入0个或任意个参数,在函数调用时自动组装成一个tuple: 关键字参数允许传入0个或任意个参数,在函数调用时自动组装成一个dict: 1. 传入可变参数: def ca ...
- 【JS学习笔记】函数传参
比如仅仅改变背景的颜色 函数传参:参数就是占位符. 那么在什么时候用传参呢?函数里定不下来的东西. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1 ...
- c# 内存的具体表现- 通用类型系统 深拷贝 浅拷贝 函数传参
c# 通用类型系统 及变量在 深拷贝 浅拷贝 函数传参 中的深层次的表现 在编程中遇到了一些想不到的异常,跟踪发现,自己对于c#变量在内存上的表现理解有偏差,系统的学习并通过代码实验梳理了各种情况下, ...
- 函数传参,改变Div任意属性的值&&图片列表:鼠标移入/移出改变图片透明度
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- x64汇编第三讲,64位调用约定与函数传参.
目录 x64汇编第三讲,64位调用约定与函数传参. 一丶复习X86传参 二丶x64汇编 2.1汇编详解 x64汇编第三讲,64位调用约定与函数传参. 一丶复习X86传参 在x86下我们汇编的传参如下: ...
- Python类三种方法,函数传参,类与实例变量(一)
1 Python的函数传递: 首先所有的变量都可以理解为内存中一个对象的'引用' a = 1 def func(a): a = 2 func(a) print(a) # 1 a = 1 def fun ...
- js函数传参
函数传参:重用代码,首先保持html代码相对一致,把核心主程序用函数包起来,把每组不同的值找出来,通过传参的方式减少代码的使用 下面代码是我早期练习的,大家随便看看就好 <!DOCTYPE ht ...
- 【又长见识了】函数传参,params参数,ref和out参数详解
一.原来函数这样传参 先看一个函数和函数调用. static void Main(string[] args) { ; Test(num);//局部变量在使用之前赋值 //Test(10); //直接 ...
- JS中的函数传参
前言: 函数分为有参有返回值,有参无返回值,无参无返回值,无参有返回值:那么对于无参数的函数你想使用函数的调用怎么办呢?如果你想封装一个代码,实现多种功能,但是形参大于实参或者实参大于形参又该如何?本 ...
随机推荐
- Web 开发相关概念
Web 开发相关概念 前端 后端 全栈 前端 Front-end:网站中用户看到的部分 HTML CSS JavaScript 库和框架 设计工具 后端 Back-end:网站中用户看不到的部分 编程 ...
- Logstash & 索引生命周期管理(ILM)
Grok语法 Grok是通过模式匹配的方式来识别日志中的数据,可以把Grok插件简单理解为升级版本的正则表达式.它拥有更多的模式,默认,Logstash拥有120个模式.如果这些模式不满足我们解析日志 ...
- 洛谷P3243 [HNOI2015]菜肴制作 (拓扑排序/贪心)
这道题的贪心思路可真是很难证明啊...... 对于<i,j>的限制(i必须在j之前),容易想到topsort,每次在入度为0的点中选取最小的.但这种正向找是错误的,题目要求的是小的节点尽量 ...
- 路径分析—QGIS+PostgreSQL+PostGIS+pgRouting(一)
前言 因业务需求,需要做最短路径分析.最近几天查询资料,并自己动手,实现了简单的路径分析. 下面就介绍具体的实现过程. 本篇文章最终结果是在 PostgreSQL 数据库中实现的,后续的可视化展示会继 ...
- bat批处理命令语法总结
::1. 关闭回显表示不显示命令本身只显示输出部分 @echo off ::2. 设置变量注意等号间不能有空格 set num=10 ::3. 使用变量 echo %num% ::4. call 调用 ...
- 2022-08-21-xdm说个事啊
layout: post cid: 15 title: xdm说个事啊 slug: 15 date: 2022/08/21 13:06:34 updated: 2022/08/21 13:06:34 ...
- MyBatis的各种查询功能
1.查询一个实体类对象 /** * 根据用户id查询用户信息 * @param id * @return */ User getUserById(@Param("id") int ...
- 齐博x2新用户手工注册接口
由于手工注册有点太落后了,并不推荐,所以我们也没有单独的为API接口开发一个注册的页面,大家可以统一使用PC或WAP的注册页来当接口使用.请求地址是:http://qb.net/index.php/i ...
- (二)Three光线检测-实现摄像机向鼠标点击位置滑动动画
(二)Three.js光线检测 摘要:使用three.js中的光线检测 Raycaster() ,实现一下效果: 通过点击处的坐标,修改摄像机位置,实现摄像机由远及近的过渡动态效果(由远景到近景) 1 ...
- centos 7.6镜像_Centos7 配置本地yum源为iso镜像
创建挂载路径 sudo mkdir /media/iso 挂载ISO镜像到目录 sudo mount -o loop CentOS-7-x86_64-Minimal-1810.iso /media/i ...