Python动态参数/命名空间/函数嵌套/global和nonlocal


Posted in Python onMay 29, 2019

1. 函数的动态参数

 

1.1 *args 位置参数动态传参

def chi(*food):
 print("我要吃", food)
chi("大米饭", "小米饭")
结果:我要吃 ('大米饭', '小米饭') # 多个参数传递进去. 收到的内容是元组tuple

1.2 **kwargs 关键字参数动态传参

def func(**kwargs):
 print(kwargs)
func(a=1, b=2, c=3)
func(a=1, b=2)

结果:

{'a': 1, 'b': 2, 'c': 3}
{'a': 1, 'b': 2}

顺序:位置参数, *args, 默认值, **kwarg

 def func(*args, **kwargs):

pass

形参的位置*,**: 聚合

 

实参的位置*,**: 打散

def fun(*args):
 print(args)
lst = [1, 4, 7]
fun(lst[0], lst[1], lst[2])
fun(*lst) # 可以使用*把一个列表按顺序打散
s = "小短腿鲁班七号"
fun(*s) # 字符串也可以打散, (可迭代对象)

2. 命名空间

在python解释器开始执行之后, 就会在内存中开辟一个空间, 每当遇到一个变量的时候, 就把变量名和值之间的关系记录下来, 但是当遇到函数定义的时候, 解释器只是把函数名读入内存, 表示这个函数存在了, 至于函数内部的变量和逻辑, 解释器是不关心的. 也就是说一开始的时候函数只是加载进来, 仅此而已, 只有当函数被调用和访问的时候, 解释器才会根据函数内部声明的变量来进行开辟变量的内部空间. 随着函数执行完毕, 这些函数内部变量占用的空间也会随着函数执行完毕而被清空.

2.1 内置名称空间 -- 存放python解释器为我们提供的名字, list, tuple, str, int 等这些都是内置命名空间

 

2.2 全局名称空间 -- 我们直接在py文件中, 函数外声明的变量都属于全局命名空间

 

2.3 局部名称空间 -- 在函数中声明的变量会放在局部命名空间

加载顺序:内置命名空间 >>> 全局命名空间 >>> 局部命名空间(函数被执行的时候)

取值顺序: 局部命名空间 >>> 全局命名空间 >>> 内置命名空间

作用域:

作用域: 作用域就是作用范围, 按照生效范围来看分为 全局作用域和局部作用域

全局作用域: 包含内置命名空间和全局命名空间. 在整个文件的任何位置都可以使用(遵循从上到下逐行执行).

局部作用域: 在函数内部可以使用.

1. 全局作用域: 内置+全局
 

2. 局部作用域: 局部(函数被调用)

3. globals() 查看全局中的内容
 

4. locals() 查看当前作用域中的内容

a = 10
def func():
 a = 40
 b = 20
def abc():
 print("哈哈")
 print(a, b) # 这里使用的是局部作用域
 print(globals()) # 打印全局作用域中的内容
 print(locals()) # 打印局部作用域中的内容
func()

3. 函数嵌套

 

函数可以互相的嵌套

def fun1():
 print(111)
def fun2():
 print(222)
 fun1()
fun2()
print(111)
# 函数的嵌套
def fun2():
 print(222)
 def fun3():
  print(666)
 print(444)
 fun3()
 print(888)
print(33)
fun2()
print(555)

 4. global和nonlocal关键

 

global: 在局部访问全局中的内容

a = 100
def func():
 global a # 加了个global表示不再局部创建这个变量了. 而是直接使用全局的a
 a = 28
 print(a)
func()
print(a)

nonlocal: 在局部寻找外层函数中离他最近的那个变量

a = 10
def func1():
 a = 20
 def func2():
 nonlocal a
 a = 30
 print(a)
 func2()
 print(a)
func1()
# 结果:
# 加了nonlocal
# 30
# 30
# 不加nonlocal
# 30
# 20

总结

以上所述是小编给大家介绍的Python动态参数/命名空间/函数嵌套/global和nonlocal,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Python 相关文章推荐
python实现获取Ip归属地等信息
Aug 27 Python
初学python的操作难点总结(新手必看篇)
Aug 03 Python
Python网络编程 Python套接字编程
Sep 13 Python
Python3.6笔记之将程序运行结果输出到文件的方法
Apr 22 Python
Python中存取文件的4种不同操作
Jul 02 Python
对Python3中bytes和HexStr之间的转换详解
Dec 04 Python
Django项目中添加ldap登陆认证功能的实现
Apr 04 Python
Python matplotlib画曲线例题解析
Feb 07 Python
python opencv 检测移动物体并截图保存实例
Mar 10 Python
Python xpath表达式如何实现数据处理
Jun 13 Python
python 绘制场景热力图的示例
Sep 23 Python
Python命令行参数argv和argparse该如何使用
Feb 08 Python
python2和python3在处理字符串上的区别详解
May 29 #Python
python TF-IDF算法实现文本关键词提取
May 29 #Python
详解Python odoo中嵌入html简单的分页功能
May 29 #Python
Python 3.8中实现functools.cached_property功能
May 29 #Python
Python3+Pycharm+PyQt5环境搭建步骤图文详解
May 29 #Python
Python安装与基本数据类型教程详解
May 29 #Python
python登录WeChat 实现自动回复实例详解
May 28 #Python
You might like
分享十款最出色的PHP安全开发库中文详细介绍
2015/03/22 PHP
PHP开发中常用的十个代码样例
2016/02/02 PHP
php设计模式之观察者模式定义与用法经典示例
2019/09/19 PHP
基于jquery实现的鼠标拖拽元素复制并写入效果
2011/08/23 Javascript
iframe子页面获取父页面元素的方法
2013/11/05 Javascript
js拖动div 当鼠标移动时整个div也相应的移动
2013/11/21 Javascript
jQuery事件用法实例汇总
2014/08/29 Javascript
JavaScript字符串对象charAt方法入门实例(用于取得指定位置的字符)
2014/10/17 Javascript
jQuery的animate函数实现图文切换动画效果
2015/05/03 Javascript
JavaScript学习小结(一)——JavaScript入门基础
2015/09/02 Javascript
easyui combotree加载静态数据问题(选不上)解决方法
2016/12/26 Javascript
Node.js获取前端ajax提交的request信息
2017/02/20 Javascript
vue中element-ui表格缩略图悬浮放大功能的实例代码
2018/06/26 Javascript
当vue路由变化时,改变导航栏的样式方法
2018/08/22 Javascript
vue-router跳转时打开新页面的两种方法
2019/07/29 Javascript
Jquery如何使用animation动画效果改变背景色的代码
2020/07/20 jQuery
VUE+Element实现增删改查的示例源码
2020/11/23 Vue.js
[47:22]Mineski vs Winstrike 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
python sys模块sys.path使用方法示例
2013/12/04 Python
Python Json模块中dumps、loads、dump、load函数介绍
2018/05/15 Python
Selenium控制浏览器常见操作示例
2018/08/13 Python
Python写一个基于MD5的文件监听程序
2019/03/11 Python
Pycharm运行加载文本出现错误的解决方法
2019/06/27 Python
python networkx 包绘制复杂网络关系图的实现
2019/07/10 Python
Python基于tkinter canvas实现图片裁剪功能
2020/11/05 Python
美国知名珠宝首饰品牌:Gemvara
2017/10/06 全球购物
酒店服务与管理毕业生求职信
2013/11/02 职场文书
现金会计岗位职责
2013/12/05 职场文书
安全责任书范本
2014/04/15 职场文书
初中班主任评语大全
2014/04/24 职场文书
预备党员2014年第四季度思想汇报范文
2014/10/25 职场文书
群众路线党员个人整改措施
2014/10/27 职场文书
交通安全月活动总结
2015/05/08 职场文书
2015年校本培训工作总结
2015/07/24 职场文书
关爱空巢老人感想
2015/08/11 职场文书
MongoDB数据库部署环境准备及使用介绍
2022/03/21 MongoDB