一、函数的对象

1、函数对象:函数名存放的就是函数的地址,所以函数名也是对像

2、函数对象的应用:

2.1、可以直接被引用   fn = cp_fn

2.2、可以当作函数参数传递    computed(cp_fn,100,20)

2.3、可以作为函数的返回值     get_cp_fn(cmd): return add

2.4、可以作为容器类型的元素

二、名称空间

1、名称空间:存放名字与内存空间地址对应关系的容器

2、作用:解决由于名字有限,导致名字重复发送冲突的问题

3、三种名称空间:

Built-in:内置名称空间;系统级,一个;随解释器执行而产生,解释器停止而销毁

Global:全局名称空间;文件级,多个;随所属文件加载而产生,文件运行完毕而销毁

global关键字可以将Local的名字提升为Global的名字

Local:局部名称空间;函数级,多个;随所属函数执行而产生,函数执行完毕而销毁

注:加载顺序:Built-in > Global > Local

三、函数的嵌套定义

将函数直接定义到另一个人函数内部,就可以使用外部函数中的名字

def outer():
                        num = 20
                       def inner():
                              print(num) # inner就可以直接使用outer中的名字
                       inner()
                  outer()

四、作用域:名字起作用的范围

1、作用:解决同名字可以共存问题

2、四种作用域:

2.1、Built-in:内置作用域,所有文件所有函数

2.2、Global:全局作用域,当前文件所有函数

2.3、Enclosing:嵌套作用域,当前函数与当前函数的内部函数

2.4、Local:局部作用域,当前函数

注:不同作用域之间名字不冲突,以达到名字的重复使用

查找顺序:Local > Enclosing > Global > Build-in

len = 10
def outer():
       len = 20 # 外层函数的局部变量:Enclosing - 嵌套作用域
       def inner():
             len = 30
             print('1:', len) # 30, inner -> outer -> global -> built-in
        inner()
        print('2:', len) # 20, outer -> global -> built-in
outer()
print('3:', len) # 10, global -> built-in

del len
print('4:', len) # len地址, built-in

五、闭包

1、closure:被包含的函数,称之为闭包

2、完整的闭包结构:

将函数进行闭包处理

提升函数名的作用域,将内部函数对象作为外部函数的返回值

def outer(url):
        def get_html():
               html = requests.get(url)
               print(html.text)
        return get_html
# 先预定义多个爬虫方法,爬页面操作并未执行
baidu = outer('https://www.baidu.com')
python = outer('https://www.python.org')
sina = outer('https://www.sina.com.cn')
# 什么时候想爬什么页面就调用指定页面的爬虫方法
baidu()
sina()
baidu()

DAY11、函数总结的更多相关文章

  1. day11——函数名的使用、f格式化、迭代器、递归

    day11 函数名的第一类对象及使用 1.可以当作值被赋值给变量 def func(): print(1) print(func) a = func a() 2.当作元素存放在容器中 def func ...

  2. day11 函数

    day11 函数 一.函数基础 """ 1 什么是函数 函数是盛放代码的容器:把实现某一功能的代码放到一个函数内就制造一个工具 2 为何要用函数 没有用函数之前程序的问题 ...

  3. python全栈学习--day11(函数高级应用)

    一,函数名是什么? 函数名是函数的名字,本质:变量,特殊的变量. 函数名()执行此函数 ''' 在函数的执行(调用)时:打散. *可迭代对象(str,tuple,list,dict(key))每一个元 ...

  4. day11 函数的参数列表

    """ 今日内容: 1.函数参数的分类 2.形参是对实参的值拷贝 3.实参的分类 4.形参的分类 5.打散机制 附1:字符串的比较 """ ...

  5. day11函数(形参实参)

    形参与实参 def fn(形参们): pass # 形参:定义函数,在括号内声明的变量名,用来结束外界传来的值# 实参:调用函数,在括号内传入的实际值,值可以为常量.变量.表达式或三者的组合 # 注: ...

  6. Python——day11 函数(对象、名称空间、作用域、嵌套、闭包)

    一.函数对象  函数名就是存放了函数的内存地址,存放了内存地址的变量都是对象,即 函数名 就是 函数对象  函数对象的应用 1. 可以直接被引用  fn = cp_fn 2 .可以当作函数参数传递 c ...

  7. python学习day11 函数Ⅲ (内置函数与lambda表达式)

    函数Ⅲ(内置函数&lambda表达式) 1.函数小高级 函数可以当做变量来使用: def func(): print(123) func_list = [func, func, func] # ...

  8. day11函数的参数,函数对象 - 函数名,函数的嵌套调用

    复习 # 什么是函数:具体特定功能的代码块 - 特定功能代码块作为一个整体,并给该整体命名,就是函数 # 函数的优点: # 1.减少代码的冗余 # 2.结构清晰,可读性强 # 3.具有复用性,开发效率 ...

  9. day-11函数的形参与实参

    形参与实参 参数介绍: 函数为什么要有参数:因为内部的函数体需要外部的数据 怎么定义函数的参数:在定义函数阶段,函数名后面()中来定义函数的参数 怎么使用函数的参数:在函数体中用定义的参数名直接使用 ...

  10. python学习Day11 函数的参数列表

    复习 什么是函数? 具体特定功能的代码块 - 特定功能代码作为一个整体,并给该整体命名,就是函数 函数的优点 : 1.减少代码的冗余,2.结构清晰,可读性强 3.具有复用性,开发效率高,维护成本高 如 ...

随机推荐

  1. 数据结构(java版)学习笔记(三)——线性表之单链表

    单链表的优点: 长度不固定,可以任意增删. 单链表的缺点: 存储密度小,因为每个数据元素,都需要额外存储一个指向下一元素的指针(双链表则需要两个指针). 要访问特定元素,只能从链表头开始,遍历到该元素 ...

  2. 杂牌机搞机之旅(一)——获得root权限(刷入magisk)

    刷机不规范,抱机两行泪,谨慎刷机!! 一般获取root权限,我们都是通过软件来获取的,但是,软件破解root的成功率不是很高,现在,android版本普遍5.0+,大名鼎鼎的magisk可以直接获得r ...

  3. Python re 模块

    Python re 模块 TOC 介绍 作用 正则表达式语法 贪婪和非贪婪 普通字符和特殊字符 分组(比较重要) re modul level 方法 正则表达式对象 匹配对象 常用例子 注意事项 Ja ...

  4. 搞懂 JavaScript 继承原理

    在理解继承之前,需要知道 js 的三个东西: 什么是 JS 原型链 this 的值到底是什么 JS 的 new 到底是干什么的 1. 什么是 JS 原型链? 我们知道 JS 有对象,比如 var ob ...

  5. 广州.NET微软技术俱乐部与其他技术群的区别

    .NET和微软技术相关的微信群有不少, 那么广州.NET微软技术俱乐部与其他技术群的区别是什么呢? 有十分大的区别! 本群公告写得很清楚! 本群坚决禁止讨论“JAVA和.NET哪个好”.“NET有没有 ...

  6. Android 手机连不上电脑

    [个人经验] 给大家分享一下,最近Android开发中一个坑. 在Android开发中,有时会需要自己开发服务端,就需要连接自己的电脑. ①首先,我们得知道我们电脑的ip地址是多少: 开始菜单---- ...

  7. Android 图片Bitmap,drawable,res资源图片之间转换

    一.知识介绍 ①res资源图片是放在项目res文件下的资源图片 ②BitMap位图,一般文件后缀为BMP,需要编码器编码,如RGB565,RGB8888等.一种逐像素的显示对象,其执行效率高,但缺点也 ...

  8. Android 启动APP时黑屏白屏的解决方案

    在开发中,我们在启动app的时候,屏幕会出现一段时间的白屏或者黑屏,不同设备时间长短不同.很影响用户体验. 首先分析一下,产生这个现象的原因,当我们在启动一个应用时,系统会去检查是否已经存在这样一个进 ...

  9. (四)版本控制管理器之VSS

    在上一篇<(二)版本控制管理器值CVS(下)>的文章中,我为大家介绍了CVS这个版本控制器,接下来我继续跟大家分享介绍下一个版本控制管理器--VSS,为什么要说这个版本控制器呢?早已过时的 ...

  10. 搭建MHA时 yum 安装perl模块提示 baseurl 错误

    今天在搭建MySQL MHA  安装MHA node所需的perl模块(DBD:mysql)时遇到了一个小的错误,如果思路不对的话,还是产生不少麻烦. 现梳理记录下来. 问题现象 执行的命令 yum ...