作用域

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笔记--作用域、高阶函数、闭包相关推荐

  1. python高阶函数看不懂_Python进阶:高阶函数的详细说明

    这篇文章讲述了Python进阶:高阶函数的详细说明有需要的朋友可以参考 函数式编程 函数是Python内建支持的一种封装,我们通过把大段代码拆成函数,通过一层一层的函数调用,就可以把复杂任务分解成简单 ...

  2. python高阶函数闭包装饰器_Python自学从入门到就业之高阶函数、嵌套函数、闭包、装饰器...

    高阶函数 在Python中,函数其实也是一种数据类型. def test(): return 'hello world' print(type(test)) # 函数对应的数据类型是 function ...

  3. 【廖雪峰Python学习笔记】高阶函数

    Higher-order function 高阶函数 映射 过滤算法 排序算法 高阶函数 变量可指向函数 >>> abs # 函数 <built-in function abs ...

  4. python四大高阶函数_Python里的高阶函数

    1.map() 是 Python 内置的高阶函数,它接收一个函数 f 和一个 list,并通过把函数 f 依次作用在 list 的每个元素上,得到一个新的 list 并返回. def f(x): re ...

  5. 廖雪峰讲python高阶函数求导公式_廖雪峰的学习笔记(三)高阶函数

    1.所谓的"高阶函数":把函数对象作为参数的函数. 2.示例: map()函数: 我们先看map.map()函数接收两个参数,一个是函数,一个是Iterable,map将传入的函数 ...

  6. python递归函数1到n的平方和_python中的高阶函数与递归函数

    高阶函数 一个函数作为另一个函数的参数传入:函数名可以作为返回值:这样的函数即为高阶函数. 例如:求两个数的平方和 def f(m): return m*m def f1(a,b,function): ...

  7. python高阶函数闭包装饰器_5.初识python装饰器 高阶函数+闭包+函数嵌套=装饰器...

    一.什么是装饰器? 实际上装饰器就是个函数,这个函数可以为其他函数提供附加的功能. 装饰器在给其他函数添加功能时,不会修改原函数的源代码,不会修改原函数的调用方式. 高阶函数+函数嵌套+闭包 = 装饰 ...

  8. Python函数式编程简介(一)高阶函数

    本文概括介绍Python函数式编程的一些概念及用法,详细请参考: https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df ...

  9. Python基础-----列表生成式、偏函数、高阶函数、闭包、装饰器

    列表生成式 列表生成式(列表推导式):通俗理解使用for循环快速创建一个列表,最终要获取一个列表 下面这个我们经常使用比较麻烦的方法: my_list=[] for i in range(1,6):p ...

最新文章

  1. JS实现一键分享功能
  2. 一次讲清UNICODE
  3. Python开发培训前景如何?
  4. jar包不统一也会报错:Exception in thread main java.lang.NoClassDefFoundError
  5. 渝粤教育 陕西师范大学 《证券投资学[专升本]》作业
  6. qt中设置控件不能使用
  7. jQuery UI Autocomplete 使用 ajax 方法传输Json数据出现乱码问题的解决
  8. python——字典攻击
  9. Oracle GoldenGate官档知识
  10. C语言中关键字typedef、enum的使用
  11. 计算机内部如何防止溢出,电脑提示堆栈溢出是什么意思 该怎么解决
  12. 日本企业遭遇严重用工短缺
  13. 【贪心+堆/模拟费用流增广】BZOJ4946 [NOI2017]蔬菜
  14. 让对方计算机死机的代码,微信让对方死机代码是什么?一串代码卡死微信
  15. 几款好用的UML建模工具
  16. A7600C USIM卡接口设计
  17. Altium数据向Cadence数据转换向导(上)
  18. N76E003模拟EEPROM读取和保存应用配置
  19. 【AngelaBaby杨颖性感公主XP主题】
  20. 亚马逊图片优化五点技巧

热门文章

  1. js创建file对象 字符串 txt_js-创建对象的多种方式
  2. php如何对mysql加锁_PHP+MySQL高并发加锁事务处理问题解决方法
  3. mysql5.6.22编译安装教程_Linux CentOS6.0下编译安装MySQL 5.6.22
  4. python绘制散点图的函数_Python用PyQt5绘制多彩随机散点图,基本控件之QPainter使用详解...
  5. pv=clear后的修复
  6. dom4j xml解析 写框架必备技能(一)
  7. 基于JAVA+SpringMVC+MYSQL的报价管理系统
  8. java上传文件的二进制_文件的上传:二进制文件的上传;
  9. 数据库之架构:主备+分库?主从+读写分离?
  10. JDK9.0.4环境变量配置