python之第一对象,函数名的应用,闭包
一、第一对象
在 Python 中万物皆为对象,函数也不例外,函数作为对象可以赋值给一个变量、可以作为元素添加到集合对象中、可作为参数值传递给其它函数,
还可以当做函数的返回值,这些特性就是第一类对象所特有的。
>>> id(func) 496835846 >>> type(funck) <class 'function'> >>>func<function foo at 0x103f45e68>
函数拥有变量的特性也可以把函数看成是一个变量,同时也可以进行赋值操作
1.函数名的应用
def func():
print(666)
print(func)#直接打印函数名,得到的是函数的内存地址。<function func at 0x0000021A4F9612F0>
2.函数名可以进行赋值运算
def func():
print(666)
f=func
f()
3.函数名可以作为参数
def func():
print(666) def func1(x):
x()
print(999)
func1(func)
4.函数名可以作为容器类(列表、字典等)类型的元素
def func1():
print(111) def func2():
print(222) def func3():
print(333) # l=[func1,func2,func3]
# for i in l:
# i() dic={1:func1,2:func2,3:func3}#创建字典时,变量不用加引号''
for i in dic:
dic[i]()
· 5.函数名的返回值
def func1():
print(333) def func2(x):
print(666)
return x
func2(func1)()
二、闭包
内层函数对外层函数非全局变量的引用叫作闭包。
1.如何判断是不是闭包__closure__
返回None不是闭包,返回call....是闭包
2.闭包有什么用?
当执行一个函数时,如果解释器判断一个函数内部有闭包存在,python 就有一个机制,
此闭包所存在的临时命名空间不会随着函数的执行完毕而关闭.
def func():
a = 10
def inner():
print(a)
print(inner.__closure__) # 如果打印的是None. 不是闭包. 如果不是None, 就是闭包 func()
python之第一对象,函数名的应用,闭包的更多相关文章
- python --- 11 第一类对象 函数名 闭包 迭代器
一 .函数名的运用 ①函数名是⼀个变量, 但它是⼀个特殊的变量, 与括号配合可以执⾏函数的变量 ②函数名是一个内存地址 ③ 函数名可以赋值给其他变量 ④函数名可以当做容器类 ...
- day12 python函数名的应用 闭包 迭代器
day12 python 一.函数名的应用(是第一类对象) 函数名的命名规范和变量是一样的 函数名其实就是变量名 def func(): print('i am funct ...
- day11函数的参数,函数对象 - 函数名,函数的嵌套调用
复习 # 什么是函数:具体特定功能的代码块 - 特定功能代码块作为一个整体,并给该整体命名,就是函数 # 函数的优点: # 1.减少代码的冗余 # 2.结构清晰,可读性强 # 3.具有复用性,开发效率 ...
- 【学习笔记】--- 老男孩学Python,day12 函数名的应用,闭包,迭代器
1, 函数名的应用,第一类对象 函数名可以像变量一样进行使用 1.赋值 def func(): print("你吃了么?") # print(func) # a = func # ...
- python之路--第一类对象,函数名,变量名
一 . 第一类对象 函数对象可以像变量一样进行赋值 , 还可以作为列表的元素进行使用 可以作为返回值返回 , 可以作为参数进行传递 def func(): def people(): print('金 ...
- python之路---11 第一类对象 函数名 闭包 迭代器
二十九. 1.函数名的运用 ①函数名是⼀个变量, 但它是⼀个特殊的变量, 与括号配合可以执⾏函数的变量 ②函数名是一个内存地址 ③ 函数名可以赋值给其他变量 ④函数名可以当 ...
- python基础之函数名的使用,闭包以及迭代器
内容梗概: 1. 函数名的使⽤用以及第⼀一类对象 2. 闭包 3. 迭代器 1.函数名一. 函数名的运⽤.函数名是一个变量, 但它是⼀个特殊的变量, 与括号配合可以执行函数的变量.1.1 函数名的内存 ...
- python基础学习Day11 函数名的应用、闭包、迭代器
一.函数名的应用 1.函数名就是函数的内存地址 def func(): print(666) func() print(func) #函数的内存地址 2.函数名可以作为变量 def func1(): ...
- Python学习-第一天-函数和模块的使用
目录 Python学习-第一天总结 print输出的一种简单格式 函数参数之可变参数 模块管理函数 if else语句的单行实现(简洁) 变量作用域 函数书写格式 Python学习-第一天总结 pri ...
随机推荐
- 神啊,看看Log4Net这个东西吧
这个东西实在是让人感动的想哭囊…………-_-..... Log4Net.config文件 <?xml version="1.0" encoding="utf-8&q ...
- Node.js 服务端图片处理利器
sharp 是 Node.js 平台上相当热门的一个图像处理库,其实际上是基于 C 语言编写 的 libvips 库封装而来,因此高性能也成了 sharp 的一大卖点.sharp 可以方便地实现常见的 ...
- caffe windows10 vs2015 cuda8.0 ->vs2013
http://blog.csdn.net/xjz18298268521/article/details/52190184 http://www.cnblogs.com/xuanyuyt/p/57269 ...
- Winsock.简单TCP
PS:vs2017 编译C++代码 支持 XP:项目属性-->链接器-->系统-->需要的最小版本--> 输入 "5.1" 1.ZC:测试:c向s 发送长度 ...
- 【HTML5校企公益课】第二天
1.上午讲昨天的作业. <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> & ...
- [转帖]“腾百万”之后,腾讯的云操作系统VStation单集群调度达10万台
“腾百万”之后,腾讯的云操作系统VStation单集群调度达10万台 https://www.leiphone.com/news/201909/4BsKCJtvvUCEb66c.html 腾讯有超过1 ...
- 在 Docker 中手工部署 ASP.NET Core 应用
另一篇:在 Visual Studio 中部署 ASP.NET Core 应用 操作步骤 1. 安装 Docker For Windows(安装之前 Windows 需要开启 Hyper-V 虚拟机 ...
- CentOS下使用yum安装Apache极为方便,只需要在终端键入以下命令即可
CentOS下使用yum安装Apache极为方便,只需要在终端键入以下命令即可 1.安装Apache yum install httpd 2.设置服务器开机自动启动Apache systemctl e ...
- 剑指offer48:不用加减乘除做加法
1 题目描述 写一个函数,求两个整数之和,要求在函数体内不得使用+.-.*./四则运算符号. 2 思路和方法 位运算符:两个数异或(^)[1^0=1, 1^1=0, 0^0=0, 0^1=1, 5^5 ...
- 利用Python进行数据分析 第5章 pandas入门(1)
pandas库,含有使数据清洗和分析工作变得更快更简单的数据结构和操作工具.pandas是基于NumPy数组构建. pandas常结合数值计算工具NumPy和SciPy.分析库statsmodels和 ...