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 相关文章推荐
Selenium的使用详解
Oct 19 Python
Python拼接字符串的7种方法总结
Nov 01 Python
python得到一个excel的全部sheet标签值方法
Dec 10 Python
python实现播放音频和录音功能示例代码
Dec 30 Python
对pandas处理json数据的方法详解
Feb 08 Python
python获取微信企业号打卡数据并生成windows计划任务
Apr 30 Python
python 判断三个数字中的最大值实例代码
Jul 24 Python
Python笔记之facade模式
Nov 20 Python
python右对齐的实例方法
Jul 05 Python
Pycharm中如何关掉python console
Oct 27 Python
jupyter notebook更换皮肤主题的实现
Jan 07 Python
Python实现简繁体转换
Jun 07 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 register_shutdown_function()函数的使用示例
2015/06/23 PHP
浅谈laravel aliases别名的原理
2019/10/24 PHP
javascript修改IMG标签的src问题
2014/03/28 Javascript
js实现input密码框提示信息的方法(附html5实现方法)
2016/01/14 Javascript
完美解决js传递参数中加号和&号自动改变的方法
2016/10/11 Javascript
vue2.0 axios跨域并渲染的问题解决方法
2018/03/08 Javascript
JavaScript 九种跨域方式实现原理
2019/02/11 Javascript
echarts 使用formatter 修改鼠标悬浮事件信息操作
2020/07/20 Javascript
vue-quill-editor的使用及个性化定制操作
2020/08/04 Javascript
vue 基于abstract 路由模式 实现页面内嵌的示例代码
2020/12/14 Vue.js
vue3.0封装轮播图组件的步骤
2021/03/04 Vue.js
python抓取某汽车网数据解析html存入excel示例
2013/12/04 Python
python中使用enumerate函数遍历元素实例
2014/06/16 Python
python计算时间差的方法
2015/05/20 Python
对python字典元素的添加与修改方法详解
2018/07/06 Python
Python 确定多项式拟合/回归的阶数实例
2018/12/29 Python
Python告诉你木马程序的键盘记录原理
2019/02/02 Python
Python+Appium实现自动化测试的使用步骤
2020/03/24 Python
使用python matplotlib 画图导入到word中如何保证分辨率
2020/04/16 Python
Numpy中ndim、shape、dtype、astype的用法详解
2020/06/14 Python
python中字典增加和删除使用方法
2020/09/30 Python
python画图时设置分辨率和画布大小的实现(plt.figure())
2021/01/08 Python
让IE9以下版本的浏览器兼容HTML5的方法
2014/03/12 HTML / CSS
中国海淘族值得信赖的海淘返利网站:55海淘
2017/01/16 全球购物
英国最大的女性服装零售商:Dorothy Perkins
2017/03/30 全球购物
系统管理员的职责包括那些?管理的对象是什么?
2016/09/20 面试题
如何写出好的Java代码
2014/04/25 面试题
毕业生实习鉴定
2013/12/11 职场文书
2014个人四风对照检查材料思想汇报
2014/09/18 职场文书
学校领导四风问题整改措施思想汇报
2014/10/09 职场文书
2014年妇幼保健工作总结
2014/12/08 职场文书
升学宴答谢词
2015/01/05 职场文书
2016圣诞节贺卡寄语
2015/12/07 职场文书
磁贴还没死, 微软Win11可修改注册表找回Win10开始菜单
2021/11/21 数码科技
JavaWeb实现显示mysql数据库数据
2022/03/19 Java/Android
Python 图片添加美颜效果
2022/04/28 Python