【37.函数-命名空间】
命名空间又称为name space,顾名思义就是存放名字的地方,存什么名字呢?举例说明,若变量 x = 1,存放于内存中,那名字x存放在哪里呢?
名称空间正式存放名字x和1绑定关系的地方
名称空间共3种
1.locals:是函数内的名称空间,包括局部变量和形参
2.globals:全局变量,函数定义所在模块的名字空间
3.builtins:内置模块的名字空间
不同变量的作用域不同就是由这个变量的所在的命名空间决定的
作用域即范围
全局范围:全局灵活,全局有效
局部范围:临时存活,局部有效
查看作用域的方法globals(),locals()

【38.函数-作用域的查找空间】
作用域的查找顺序
LEGB>>locals->enclosing function ->globals->__builtins__
1.locals:是函数内的名称空间,包括局部变量和形参
2.enclosing 外部嵌套函数的命名空间
3.globals:全局变量,函数定义所在模块的名字空间(打印所在脚本的所有变量)
4.builtins:内置模块的名字空间

【39.函数-闭包】
闭包只是个概念性的东西,在外部可以执行内部函数,而且可以在外部调用内部函数的值
在外层函数执行的时候,内层函数被返回,可以调用内层函数的变量

def func():
n = 10
def func2():
print("fun2",n)
return func2
f = func()
print(f)
f()

示例

输出结果

闭包:关于闭包,即函数定义和函数表达式位于另一个函数的函数体内(嵌套函数)。而且,这些内部函数可以访问它们所在的外部函数中声明的所有局部变量
参数。当其中一个这样的内部函数在包含它们的外部函数之外被调用时,就会形成闭包。也就是说,内部函数会在外部函数返回后被执行。
而当这个内部函数执行时,它仍然必须访问其外部函数的局部变量、参数以及其他内部函数。这些局部变量、参数和函数声明(最初时)的值是外部函数返回时的值
但是也会受外部函数的影响
闭包的意义:返回的函数对象,不仅仅是一个函数对象,在该函数外还包裹了一层作用域,这使得,在函数无论在何处调用,优先使用自己外层的

-------------------------------------------------------------------------------
【40.函数-装饰器】
重要知识点!
软件开发的原则:开放-封闭原则,已经实现功能的代码是不能被修改的,但是可以被扩展
所以如何在不改变原有功能代码的情况下,加上新的功能呢?
高阶函数的特性,把一个函数当做一个参数,或者当做返回值给另一个函数(函数的嵌套就可以实现)但是这样会修改调用的方式,这样是不可以的

【41.函数-装饰器流程分析】
装饰器:在符合开放-封闭的原则下,为代码加上新的功能(闭包+函数的重新赋值)
语法糖:装饰器@,只能加到函数的上方

【42.函数-装饰带参数的函数】
为装饰器加上非固定参数(*args,**kwargs)

【43.函数-装饰器带参数2】

--------------------------------------------------------------------------------
装饰器部分重新学

def timer(func):
def inner(*args,**kwargs):
'''执行函数之前要做的'''
re = func(*args,**kwargs)
'''执行函数之后要做的'''
return re
return inner @timer
def aaa():print(‘a’)

装饰器再读

# def wrapper(f): #装饰器函数,f是被装饰的函数
# def inner(*args,**kwargs):
# '''在被装饰函数之前要做的事'''
# ret = f(*args,**kwargs) #被装饰的函数
# '''在被装饰函数之后要做的事'''
# return ret
# return inner
#
# @wrapper #语法糖 @装饰器函数名
# def func(a,b): #被装饰的函数
# time.sleep(0.01)
# print('XXXX',a,b)
# return 'XXX'

路飞学城Python-Day10的更多相关文章

  1. 路飞学城—Python爬虫实战密训班 第三章

    路飞学城—Python爬虫实战密训班 第三章 一.scrapy-redis插件实现简单分布式爬虫 scrapy-redis插件用于将scrapy和redis结合实现简单分布式爬虫: - 定义调度器 - ...

  2. 路飞学城—Python爬虫实战密训班 第二章

    路飞学城—Python爬虫实战密训班 第二章 一.Selenium基础 Selenium是一个第三方模块,可以完全模拟用户在浏览器上操作(相当于在浏览器上点点点). 1.安装 - pip instal ...

  3. 路飞学城Python爬虫课第一章笔记

    前言 原创文章,转载引用务必注明链接.水平有限,如有疏漏,欢迎指正. 之前看阮一峰的博客文章,介绍到路飞学城爬虫课程限免,看了眼内容还不错,就兴冲冲报了名,99块钱满足以下条件会返还并送书送视频. 缴 ...

  4. 路飞学城-Python开发集训-第3章

    学习心得: 通过这一章的作业,使我对正则表达式的使用直接提升了一个level,虽然作业完成的不怎么样,重复代码有点多,但是收获还是非常大的,有点找到写代码的感觉了,遗憾的是,这次作业交过,这次集训就结 ...

  5. 路飞学城-Python开发集训-第1章

    学习体会: 在参加这次集训之前我自己学过一段时间的Python,看过老男孩的免费视频,自我感觉还行,老师写的代码基本上都能看懂,但是实际呢?....今天是集训第一次交作业的时间,突然发现看似简单升级需 ...

  6. 路飞学城-Python开发集训-第4章

    学习心得: 学习笔记: 在python中一个py文件就是一个模块 模块好处: 1.提高可维护性 2.可重用 3.避免函数名和变量名冲突 模块分为三种: 1.内置标准模块(标准库),查看所有自带和第三方 ...

  7. 路飞学城-Python开发集训-第2章

    学习心得: 这章对编码的讲解超级赞,现在对于编码终于有一点认知了,但还没有大彻大悟,还需要更加细心的琢磨一下Alex博客和视频,以前真的是被编码折磨死了,因为编码的问题而浪费的时间很多很多,现在终于感 ...

  8. 路飞学城-Python开发-第二章

    ''' 数据结构: menu = { '北京':{ '海淀':{ '五道口':{ 'soho':{}, '网易':{}, 'google':{} }, '中关村':{ '爱奇艺':{}, '汽车之家' ...

  9. 路飞学城-Python开发-第三章

    # 数据结构: # goods = [ # {"name": "电脑", "price": 1999}, # {"name&quo ...

  10. 路飞学城-Python开发-第一章

    # 基础需求: # 让用户输入用户名密码 # 认证成功后显示欢迎信息 # 输错三次后退出程序 username = 'pandaboy' password = ' def Login(username ...

随机推荐

  1. python 一句话输出26个英文字母

    chr(i) # return i character ord(c) # return integer >>> [chr(i) for i in range(97,123)] ['a ...

  2. OracleRef游标

    提到个思考:怎样让游标作为参数传递? 解决这个问题就需要用到 REF Cursor . 1,什么是 REF游标?  动态关联结果集的临时对象.即在运行的时候动态决定执行查询.   2,REF 游标有什 ...

  3. HTML大纲

  4. Functional programming-函数式编程

    In computer science, functional programming is a programming paradigm—a style of building the struct ...

  5. 省选模板_STL

    目录: 1. multiset 2. reverse 1.multiset namespace STL{ int main(){ multiset<int>::iterator s; mu ...

  6. CF894E Ralph and Mushrooms_强连通分量_记忆化搜索_缩点

    Code: #include<cstdio> #include<stack> #include<cstring> using namespace std; cons ...

  7. Pyhton学习——Day58

    From表单验证 <!DOCTYPE html> <html lang="en"> <head> <meta charset=" ...

  8. 《Exception》第八次团队作业:Alpha冲刺(大结局)

    一.项目基本介绍 项目 内容 这个作业属于哪个课程 任课教师博客主页链接 这个作业的要求在哪里 作业链接地址 团队名称 Exception 作业学习目标 1.掌握软件测试基础技术.2.学习迭代式增量软 ...

  9. 【XSY2989】字符串

    题目来源:NOI2018模拟测试赛(二十六) 题解: 首先由于这是个01串,所以反对称串的意思就是这个字符串的后半部分是前半部分的反转且翻转结果: 一个串出现有三种情况:在前半部分,在后半部分或穿过中 ...

  10. 51nod 1302(贪心+平衡树)

    能推出一些性质. 矩形肯定是全部躺着或全部立着比较优. 如图x1显然等于x2,y1显然小于y2. 所以我们就让它们都躺下吧. 然后一定有一组的宽为宽最小的矩形的宽. 然后我们枚举另一组的宽最小的矩形. ...