Python函数高级
函数对象
在面向对象编程中 一切皆对象
函数在python中是第一类对象
函数可以这么用
可以被引用
def func():
print('hello world !')
f=func
f()可以当做参数传入
def func():
print('hello world !') def func1(func):
print('hello China !')
func()
f = func1(func)可以当做函数的返回值
a = 1
def func():
return a
res = func()
print(res)
1可以当做容器类型的元素
def register():
print("注册") def login():
print("登录")
def check():
print("查看") l = [register,login,check]
l[0]()
函数的嵌套
函数的嵌套调用
在函数内调用了其他函数
def func():
print('hello world !') def func1(func):
print('hello China !')
func()
f = func1(func)函数的嵌套定义
在函数内又定义了其他函数,定义在函数内部的函数只能在函数内部用
def func():
print("hello world !")
def func1():
print("hello China")
名称空间(name space)
定义
专门存名字的空间,存放名字与值绑定关系 (名字和地址)的地方。
分类
内置名称空间(print、len、max)
内置名称:存放python解释器自带的名字
生效与失效:在解释器启动时即生效,解释器关闭时失效
全局名称空间
全局名称:文件级别的名字(顶头写的)即不是内置名称也不是局部名称就是全局名称
生效与失效:在执行文件时生效,在所有文件结束或在执行期间被删除,则失效。
局部名称空间
局部名称:在函数内的名称就是局部名称
生效与失效:调用时产生,函数结束时结束。函数内的名字和参数都存放于局部空间
名称空间的加载顺序:内置 >>> 全局 >>> 局部
名称空间的查找顺序:局部 >>> 全局 >>> 内置
作用域
定义:域》指的是区域,范围的意思,作用域即不同名称作用的范围
全局作用域:包含内置名称空间和全局名称空间的名字
特点:在任何位置都能访问得到
该范围内的名字会伴随程序整个生命周期
局部作用域:包含局部名称空间的名字
特点:只能在函数内使用
调用时生效,调用结束时失效
globals(查看全局作用域中的内容) 表示的全局范围 就是所谓的全局作用域
print(dir(globals()["__builtins__"]))
locals(查看局部作用域中的内容)要注意的是你在全局中使用locals看到的就是全局的内容,与globals没有什么区别。
print(locals()) # 在全局中查看作用域,相当于globals
def func():
a = 100
print(locals()) # 在局部空间查看作用域
func()global:明确声明,要使用全局中的名称
nonlocal:明确声明,要使用上一层中的名称,如上一层没有则找上上层,但是注意 不能找到全局中
注意:你在全局中使用locals 看到的就是全局的内容
闭包函数
定义:定义在函数内部的函数,并且该函数包含对外部函数作用域中名字的引用,该函数称为闭包函数
作用域关系在函数定义阶段就规定死了,与调用位置无关。
def outer():
a = 1
def inner():
print(a) return inner
Python函数高级的更多相关文章
- python函数高级特性
掌握了Python的数据类型.语句.函数,基本可以编写出很多有用的程序了.但是Python中,代码不是越多越好,而是越少越好.代码不是越复杂越好,而是越简单越好.基于这一思想,我们来介绍python中 ...
- 五年级--python函数高级运用
一.装饰器 二.迭代器 三.生成器 四.练习 一.装饰器 1.1 闭包函数用法 # 需求: # 执行一个函数前需要认证是否登录,如果登录则不需再登录. # 只认证一次,后续操作无需认证 # 要求认证使 ...
- Python —— 函数高级特性(切片、迭代、列表生成式、生成器、迭代器)
一.切片(Slice) 在很多编程语言中,针对字符串提供了很多截取函数(i.e. substring),目的就是对字符串切片.python中没有针对字符串的截取函数,需要通过“切片”来完成. 取一个 ...
- 12、Python函数高级(命名空间、作用域、装饰器)
一.名称空间和作用域 1.命名空间(Namespace) 命名空间是从名称到对象的映射,大部分的命名空间都是通过 Python 字典来实现的. 命名空间提供了在项目中避免名字冲突的一种方法.各个命名空 ...
- python 函数高级功能
闭包 我们可以将闭包理解为一种特殊的函数,这种函数由两个函数的嵌套组成,且称之为外函数和内函数,外函数返回值是内函数的引用,此时就构成了闭包. # 闭包 # 外部函数的参数被内部函数引用,内部函数对外 ...
- Python函数装饰器高级用法
在了解了Python函数装饰器基础知识和闭包之后,开始正式学习函数装饰器. 典型的函数装饰器 以下示例定义了一个装饰器,输出函数的运行时间: 函数装饰器和闭包紧密结合,入参func代表被装饰函数,通过 ...
- 进击的Python【第七章】:Python的高级应用(四)面向对象编程进阶
Python的高级应用(三)面向对象编程进阶 本章学习要点: 面向对象高级语法部分 静态方法.类方法.属性方法 类的特殊方法 反射 异常处理 Socket开发基础 一.面向对象高级语法部分 静态方法 ...
- 进击的Python【第六章】:Python的高级应用(三)面向对象编程
Python的高级应用(三)面向对象编程 本章学习要点: 面向对象编程介绍 面向对象与面向过程编程的区别 为什么要用面向对象编程思想 面向对象的相关概念 一.面向对象编程介绍 面向对象程序设计(英语: ...
- 进击的Python【第五章】:Python的高级应用(二)常用模块
Python的高级应用(二)常用模块学习 本章学习要点: Python模块的定义 time &datetime模块 random模块 os模块 sys模块 shutil模块 ConfigPar ...
随机推荐
- [题解](树形dp/换根)小x游世界树
2. 小x游世界树 (yggdrasi.pas/c/cpp) [问题描述] 小x得到了一个(不可靠的)小道消息,传说中的神岛阿瓦隆在格陵兰海的某处,据说那里埋藏着亚瑟王的宝藏,这引起了小x的好奇,但当 ...
- centos 7 安装pip和pip3
首先安装epel扩展源: yum -y install epel-release 更新完成之后,就可安装pip: yum -y install python-pip 安装完成之后清除cache: yu ...
- 《Python网络爬虫相关基础概念》
爬虫介绍 引入 之前在授课过程中,好多同学都问过我这样的一个问题:为什么要学习爬虫,学习爬虫能够为我们以后的发展带来那些好处?其实学习爬虫的原因和为我们以后发展带来的好处都是显而易见的,无论是从实际的 ...
- Codeforces Round #397 by Kaspersky Lab and Barcelona Bootcamp (Div. 1 + Div. 2 combined) B
Description Kostya likes Codeforces contests very much. However, he is very disappointed that his so ...
- springMVC-上传图片
SpringMVC文件上传与下载 上传图片 配置多媒体文件解析器 配置虚拟目录 在tomcat上配置图片虚拟目录,在tomcat下conf/server.xml中添加: <Context doc ...
- 542 01 Matrix 01 矩阵
给定一个由 0 和 1 组成的矩阵,找出每个元素到最近的 0 的距离.两个相邻元素间的距离为 1 .示例 1:输入:0 0 00 1 00 0 0输出:0 0 00 1 00 0 0 示例 2:输入: ...
- [转]为ReportViewer导出的PDF文档加上水印
接到一個頗富挑戰性的需求,Reporting Service或RDLC報表可匯出成Excel.PDF等檔案格式,對一般麻瓜型使用者而言,PDF唯讀,Excel則可修改,業務單位希望在拿到報表紙本時加以 ...
- 使用Intellij IDEA搭建一个简单的Maven项目
IntelliJ IDEA是Java最优秀的开发工具,它功能全面,提示比较智能,开发界面炫酷,新技术支持的比较迅速. 我使用了Eclipse快10年了,IntelliJ IDEA这么好用必须要试一试. ...
- Apache is running a threaded MPM, but your PHP module is not compiled to be threadsafe. you need to recompile php. pre-configuration failed
手动配置想要组合版本的wamp环境时,在服务器上直接下载的几个安装包怎么都组合安装不成功,纠结很久,终于找到原因.配置apache支持php后apache一直无法成功启动.后来发现php是nts的版本 ...
- arcgis jsapi接口入门系列(10):图形高亮
jsapi也有提供高亮的实现接口,但这里没用,而用的是一种改变图形(graphic)样式的思路 本文实现效果是:地图有多个面图形,当鼠标移动到面的上方,面高亮显示,鼠标移出后高亮解除 初始化 //高亮 ...