python变量作用域图解_python笔记--作用域、高阶函数、闭包
作用域
python中被赋值的变量的位置不同,限制了能访问到变量的范围也不同,换句话说就是“变量的作用域是由其在代码中的位置所决定的”。
1.LEGB规则
L(local):局部作用域,拿两层嵌套函数来说:内层函数定义的变量,其作用域就是局部作用域,只能由内层函数来使用,优先级最高。只有在调用内层函数时才会调用这种局部变量,所以是暂时存在的。
E(enclosing):嵌套作用域,拿两层嵌套函数来说:外层函数定义的变量,其作用域就是嵌套作用域。内外层函数都可以使用这种变量,常用于闭包。
G(globle):全局作用域,定义在函数之外的变量,模块中的函数都可以使用。
B(built-in):内置作用域,系统内置模块中的变量。
2.函数搜索变量范围的优先级是:局部作用域>嵌套作用域>全局作用域>内置作用域
简单举例说明:#-*- coding:utf-8 -*-
a=10 #全局作用域
def test1():
b=20 #嵌套作用域
def test2():
c=30 #局部作用域
return(b-c)
print(test2())
test1()
高阶函数
函数作为参数传入的函数就是高阶函数。简单举例说明:#-*- coding:utf-8 -*-
import sys
def my_print():
print("this is a test!")
def my_confirm(f):
confirm=input("是否继续yes/no:")
if confirm == 'yes':
f()
else:
print("即将退出!")
sys.exit()
my_confirm(my_print)
闭包
嵌套作用域的变量被内层函数调用就是闭包,简单举例说明:#-*- coding:utf-8 -*-
def size1():
a=10 #嵌套作用域的变量
def inner1():
if a>5:
print("more!")
else:
print("less!")
return inner1 #指向了inner1函数的内存地址
size1()()
def size2(a=1): #变量作为外层函数参数传入
def inner2():
if a>5:
print("more!")
else:
print("less!")
return inner2
size2(20)()
python变量作用域图解_python笔记--作用域、高阶函数、闭包相关推荐
- python高阶函数看不懂_Python进阶:高阶函数的详细说明
这篇文章讲述了Python进阶:高阶函数的详细说明有需要的朋友可以参考 函数式编程 函数是Python内建支持的一种封装,我们通过把大段代码拆成函数,通过一层一层的函数调用,就可以把复杂任务分解成简单 ...
- python高阶函数闭包装饰器_Python自学从入门到就业之高阶函数、嵌套函数、闭包、装饰器...
高阶函数 在Python中,函数其实也是一种数据类型. def test(): return 'hello world' print(type(test)) # 函数对应的数据类型是 function ...
- 【廖雪峰Python学习笔记】高阶函数
Higher-order function 高阶函数 映射 过滤算法 排序算法 高阶函数 变量可指向函数 >>> abs # 函数 <built-in function abs ...
- python四大高阶函数_Python里的高阶函数
1.map() 是 Python 内置的高阶函数,它接收一个函数 f 和一个 list,并通过把函数 f 依次作用在 list 的每个元素上,得到一个新的 list 并返回. def f(x): re ...
- 廖雪峰讲python高阶函数求导公式_廖雪峰的学习笔记(三)高阶函数
1.所谓的"高阶函数":把函数对象作为参数的函数. 2.示例: map()函数: 我们先看map.map()函数接收两个参数,一个是函数,一个是Iterable,map将传入的函数 ...
- python递归函数1到n的平方和_python中的高阶函数与递归函数
高阶函数 一个函数作为另一个函数的参数传入:函数名可以作为返回值:这样的函数即为高阶函数. 例如:求两个数的平方和 def f(m): return m*m def f1(a,b,function): ...
- python高阶函数闭包装饰器_5.初识python装饰器 高阶函数+闭包+函数嵌套=装饰器...
一.什么是装饰器? 实际上装饰器就是个函数,这个函数可以为其他函数提供附加的功能. 装饰器在给其他函数添加功能时,不会修改原函数的源代码,不会修改原函数的调用方式. 高阶函数+函数嵌套+闭包 = 装饰 ...
- Python函数式编程简介(一)高阶函数
本文概括介绍Python函数式编程的一些概念及用法,详细请参考: https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df ...
- Python基础-----列表生成式、偏函数、高阶函数、闭包、装饰器
列表生成式 列表生成式(列表推导式):通俗理解使用for循环快速创建一个列表,最终要获取一个列表 下面这个我们经常使用比较麻烦的方法: my_list=[] for i in range(1,6):p ...
最新文章
- JS实现一键分享功能
- 一次讲清UNICODE
- Python开发培训前景如何?
- jar包不统一也会报错:Exception in thread main java.lang.NoClassDefFoundError
- 渝粤教育 陕西师范大学 《证券投资学[专升本]》作业
- qt中设置控件不能使用
- jQuery UI Autocomplete 使用 ajax 方法传输Json数据出现乱码问题的解决
- python——字典攻击
- Oracle GoldenGate官档知识
- C语言中关键字typedef、enum的使用
- 计算机内部如何防止溢出,电脑提示堆栈溢出是什么意思 该怎么解决
- 日本企业遭遇严重用工短缺
- 【贪心+堆/模拟费用流增广】BZOJ4946 [NOI2017]蔬菜
- 让对方计算机死机的代码,微信让对方死机代码是什么?一串代码卡死微信
- 几款好用的UML建模工具
- A7600C USIM卡接口设计
- Altium数据向Cadence数据转换向导(上)
- N76E003模拟EEPROM读取和保存应用配置
- 【AngelaBaby杨颖性感公主XP主题】
- 亚马逊图片优化五点技巧
热门文章
- js创建file对象 字符串 txt_js-创建对象的多种方式
- php如何对mysql加锁_PHP+MySQL高并发加锁事务处理问题解决方法
- mysql5.6.22编译安装教程_Linux CentOS6.0下编译安装MySQL 5.6.22
- python绘制散点图的函数_Python用PyQt5绘制多彩随机散点图,基本控件之QPainter使用详解...
- pv=clear后的修复
- dom4j xml解析 写框架必备技能(一)
- 基于JAVA+SpringMVC+MYSQL的报价管理系统
- java上传文件的二进制_文件的上传:二进制文件的上传;
- 数据库之架构:主备+分库?主从+读写分离?
- JDK9.0.4环境变量配置