动态传参, 名称空间, 嵌套, gloabal, nonlocal
一, 动态传参
1. *args
接收到的是元组
先用位置参数进行传参, 剩下的位置参数用*args进行传参
2. **kwargs
接收到的是一个字典
先用关键字参数进行传参, 剩下的参数用**kwargs进行传参
位置参数, *args, 默认值参数, **kwargs
形参的**kwargs后面再出现任何 位置参数 或 关键字参数 或 *args参数 都会报错, 显示语法错误
形参的*args参数 后面如果加上 位置参数 会报错, 因为位置参数接不到传参, 显示位置参数没接到传参的错误
实参的位置参数必须全部在关键字参数前
def func(a, *args, b='abc, **kwargs):
print(a, args, b, kwargs)
形参*args, **kwargs聚合
实参*lst, **dic打散
实参的打散: func(*lst, **dic)
def func(**kwargs):
print(kwargs)
func(qwe='123', asd='456')
def func(**kwargs):
print(kwargs)
func('qwe'='123', 'asd'='456') # 字符串可以作为字典的键, 但是这里会报错, 因为如果字符串要传到函数中去, 需要键是一个变量
函数注释:
def func(a, b):'''计算两数之和:param a: 第一个数:param b: 第二个数:return: 两个数的和'''return a+b
print(func.__doc__)
二. 命名空间
1. 内置命名空间
2. 全局命名空间
3. 局部命名空间
函数调用, 局部命名空间包括嵌套的函数
作用域:
全局作用域: 内置命名空间 + 全局命名空间
局部作用域: 局部命名空间
print(globals()) 查看全局命名空间中的内容
print(locals()) 查看当前作用域中的内容
三. 函数嵌套
def a():
print('1')
def b():
print('2')
def c():
print('3')
c()
b()
a()
输出:1 2 3
global: 访问全局命名空间的变量, 并可以改变全局命名空间的变量
global a
nonlocal: 访问外层函数中最近一层的那个变量, 并可以改变那个变量
nonlocal b
不使用global或者nonlocal只能读取上一层或全局命名空间的变量, 是不会改变上一层函数或全局命名空间的变量的
转载于:https://www.cnblogs.com/NachoLau/p/9449393.html
动态传参, 名称空间, 嵌套, gloabal, nonlocal相关推荐
- 函数动态传参详细,作用域和名称空间,global和nonlocal
1. 动态传参(重点) *, ** *, ** : 形参: 聚合 位置参数* -> 元组 关键字** -> 字典 实参: 打散 列表, 字符串, 元素 -> * 字典 -> * ...
- day03 文件操作 函数 参数 返回值 作用域和名称空间 global和nonlocal
一.文件 (一)文件操作 open(文件, mode="", encoding="utf-8") 文件读取: r(read) 1. readline() 读取一 ...
- 在Java中动态传参调用Python脚本
最近,又接触到一个奇葩的接口,基于老板不断催促赶时间的情况下,在重写java接口和复用已有的python脚本的两条路中选择了后者,但是其实后者并没有好很多,因为我是一个对python的认识仅限于其名称 ...
- vue 中的动态传参和query传参
Vue router 如何传参 params.query 是什么? params:/router1/:id,这里的 id 叫做 params.例如/router1/123, /router1/789 ...
- python调用shell脚本的参数_使用python执行shell脚本 并动态传参 及subprocess的使用详解
最近工作需求中 有遇到这个情况 在web端获取配置文件内容 及 往shell 脚本中动态传入参数 执行shell脚本这个有多种方法 最后还是选择了subprocess这个python标准库 subpr ...
- v-for 循环 @click 动态传参(参数动态)
v-for 循环 @click 动态传参(参数动态) 代码示下: @click="function('id_'+data.id)" 以上就是关于"v-for 循环 @cl ...
- sql 不为空_sql动态传参在springData中的应用(补充)
在之前的文章提到过关于sql动态传参在springData中的应用,下面补充一下关于原生sql和springData的同一需求下的两种不同的写法: 需求:contoller层传递一个map给servi ...
- 中给函数赋读权限_sql动态传参在springData中的应用(补充)
在之前的文章提到过关于sql动态传参在springData中的应用,下面补充一下关于原生sql和springData的同一需求下的两种不同的写法: 需求:contoller层传递一个map给servi ...
- Vue路由动态渲染和动态传参
一.动态渲染路由 // router/routerjs{ path: '/movie/1', component: Movie}, //app组件<router-link to="/m ...
最新文章
- 会话创建过程-创建Executor
- Django从理论到实战(part13)--include函数
- textarea选中行删除_Easy Data Transform如何在Excel中删除重复的行?
- 用python快速开发一个实用的socket服务器
- 【GStreamer开发】GStreamer基础教程05——集成GUI工具
- 桌面电源、USB、读卡总集线器的想法
- 如何在Kubernetes中暴露服务访问 1
- pdf2htmlex 中的字体嵌入
- dnf红眼补丁在哪下载_dnf补丁下载到哪里
- 开始学习机器学习之前你必须要了解的知识有哪些?机器学习系列入门篇
- jtds 支持 mysql 吗?_jTDS驱动兼容性问题
- Springboot中自动转JSON输出
- ios系统铃声调用方法
- | 应用打包还是测试团队老大难问题?
- 第一次使用acme.sh 手动生成证书(DNS手动模式)
- 100个冷笑话,越往后越冷(郁闷时专用……)
- 微信小程序点击发送短信验证(60秒倒计时)
- 计算机基础算术加法,计算机基础第二讲.ppt
- umts是移动还是联通_为什么联通不随意放弃WCDMA!
- 纯Javascript的输入框掩码
热门文章
- 在LINUX中部署FTP服务器
- POJ2488 A Knight's Journey(DFS)
- MySql表以及数据导入导出
- python方差的代码_Python statistics pvariance()用法及代码示例
- rabbitmq 查看消费者_(Windows环境下)RabbitMQ系列(一)安装以及入门使用
- MatrixCursor 模拟数据库
- Notification使用详解之二:可更新进度的通知
- Thread、Runnable和Callable
- java 关键字null
- 网页内容若使用gzip压缩--获得页面源码