Python_Mix*函数名的使用以及第一类对象,闭包,迭代器,for循环的内部机制
- 一:函数名的应用(第一类对象)
- 函数名的命名规范和变量是一样的,函数名其实就是变量名,
- 0)函数名可以赋值给其他变量
def func(): #定义一个名为func的函数
print('my angel')
a = func #将函数名func赋值给a
func()
a() #调用func()和a()
#结果为:
my angel
my angel
#所以函数名是可以赋值给其他变量的def func():
print("my angel")
a = func
print(a)
func()
a()
print(func) #通过打印a和func,可以得出两个函数的内存地址完全一致- 1)可以作为列表中的元素进行存储.
-
def func1(): #定义函数1
pass
def func2(): #定义函数2
pass
lst = [func1,func2] #将函数作为元素插入列表,注意:这里函数名不加小括号,加小括号是引用函数
for el in lst:
el()- 2)可以作为参数传递给函数.
def func():
pass
def proxy(fn): #这里的fn现在为函数func
fn() #结果为fn(func)
proxy(func) #将函数名func作为参数传递给函数proxy- 3)可以作为函数的返回值
def fanc():
def inner(): #3,执行inner函数
pass
return inner #2,fanc函数的返回值是inner
func()() #1,调用func函数- 二:闭包
- 什么是闭包:在内层函数中访问外层函数的局部变量.
def func():
name = '第一次-光良'
def func2():
print(name) #3,函数func2中没有name这个变量,会从外层找这个变量,这就是闭包.
func2() #2,调用func2函数
func() #1,调用func函数 #结果为'第一次-光良'- 相关操作:
- 可以使用函数名.__closure来检测函数是否是闭包,如果返回None就不是闭包,
- 好处:
- 1)保护你的变量不受外界影响
- 2)可以让变量常驻内存,供后面的程序使用.
- 相关操作:
- 三:迭代器
- 迭代器用来遍历列表,字符串,元组......可迭代对象
- 相关操作:
- 使用dir来查看该数据包含了哪些方法
- 可迭代对象:Iterable,里面有__iter__( )可以获取迭代器,没有__next__( )
- 迭代器:Iterator,里面有__iter__( )可以获取迭代器,还有__next__( )
- 迭代器的特点:
- 1)只能向前
- 2)惰性机制(给一条指令,执行一次)
- 3)省内存(生成器)
- for循环的内部机制:
- 1)首先获取到迭代器
- 2)使用while循环获取数据
- 3)it.__next__( )来获取数据
- 处理异常 try:xxx except Stoplteration:
Python_Mix*函数名的使用以及第一类对象,闭包,迭代器,for循环的内部机制的更多相关文章
- python 函数名的应用(第一类对象),闭包,迭代器
1.函数名的应用(第一类对象) 函数名的命名规范和变量是一样的 函数名其实就是变量名 可以作为列表中的元素进行储存. def func1(): pass def func2(): pass lst = ...
- python基础(13):函数名的使用、第一类对象、闭包、迭代器
1. 函数名的运用 函数名是⼀个变量,但它是⼀个特殊的变量,与括号配合可以执⾏函数的变量. 1.1 函数名的内存地址 def func(): print("呵呵") print(f ...
- python 第一类对象 闭包 迭代器
########################总结########################### 1. 函数名 -> 第一类对象 函数名就是变量名. 函数可以赋值 函数可以作为集合类的 ...
- day11 第一类对象 闭包 迭代器
今日主要内容: 1 . 第一类对象 -->函数名--> 变量名 2. 闭包 -->函数的嵌套 3. 迭代器 --> 固定的思想 for 循环 第一类对象 : 函数对象介意向变 ...
- python第一类对象,闭包,迭代器
一.第一类对象 第一类对象 -> 函数名 -> 变量名 1.特征: 函数对象可以像变量一样进行赋值 还可以作为列表的元素进行使用 还可以作为返回值返回 还可 ...
- 巨蟒python全栈开发-第11天 第一类对象 闭包 迭代器
一.今日主要内容总览(重点) 1.第一类对象->函数名=>变量名 (1)函数对象可以像变量一样进行赋值 (2)还可以作为列表的元素进行使用 (3)还可以作为返回值返回 (4)还可以作为参数 ...
- day11——函数名的使用、f格式化、迭代器、递归
day11 函数名的第一类对象及使用 1.可以当作值被赋值给变量 def func(): print(1) print(func) a = func a() 2.当作元素存放在容器中 def func ...
- 13 Python之第一类对象闭包和迭代器
def fn(): print("我叫fn") fn() print(fn)## <function fn at 0x0000000001D12E18> f ...
- python之函数闭包、可迭代对象和迭代器
一.函数名的应用 # 1,函数名就是函数的内存地址,而函数名()则是运行这个函数. def func(): return print(func) # 返回一个地址 # 2,函数名可以作为变量. def ...
随机推荐
- 系统开机时提示BOOTMGR is compressed
问题描述: 开机时提示 BOOTMGR is compressed Press Ctrl+Alt+Del to restart 操作方法: 1.插入带有U盘启动的U盘2.进入winpe系统后,打开“ ...
- Py 最全的常用正则表达式大全 ZZ
很多不太懂正则的朋友,在遇到需要用正则校验数据时,往往是在网上去找很久,结果找来的还是不很符合要求.所以我最近把开发中常用的一些正则表达式整理了一下,在这里分享一下.给自己留个底,也给朋友们做个参考. ...
- 14: linux实用命令
1.1 基本实用命令整理 1.查找大文件文件 du -sh ./*|grep G # 查看当前目录下个文件大于1G的文件夹 2.查找日志文件中 5xx数量,并进行排序 ...
- Oracle索引之Btree索引
索引介绍 日常开发中,对于数据的查询如果需要优化,常听说要加个索引.但是为什么加了索引,数据的查询就快了呢?那是不是加了索引就一定会是有效或者有利的呢? Oracle中常见有BTREE索引,位图索引和 ...
- 函数def
函数:把执行一定功能的动作封装到一起>>> def 函数名(形参) 通过一个 函数名(实参) 去调用它,传参来执行功能.动作,输出结果 .定义:def ...
- 原生JS封装创建多级菜单函数
手写一个使用原生JS封装的多级菜单的函数,满足以下几点需求. 子类层级不确定,可根据数据自动生成多级菜单. 操作便捷,只需传入一个HTML标签. 缺点: 需要满足特定的数据结构 废话不多说,展示代码. ...
- Oracle使用——oracle11g安装——Oracle要求的结果: 5.0,5.1,5.2,6.0 6.1 之一 实际结果: 6.2
问题 正在检查操作系统要求... 要求的结果: 5.0,5.1,5.2,6.0 之一 实际结果: 6.1 检查完成.此次检查的总体结果为: 失败 <&l ...
- WinForm 设置窗体启动位置在活动屏幕右下角
WinForm 设置窗体启动位置在活动屏幕右下角 在多屏幕环境下, 默认使用鼠标所在的屏幕 1. 设置窗体的 StartPosition 为 FormStartPosition.Manual. 2. ...
- call 和 apply方法解析
ECAMScript 3给Function的原型定义了两个方法,它们是 `Function.prototype.call` 和 `Function. prototype.apply`.在实际开发中,特 ...
- JS及相关控件
1.radio 1)不选中任何值 2)获取选中的值 3)让某个选项选中 4)发生改变时的事件 5)让某个选项不能选 2.CheckBox 1)选中 2)取消 3.select 1)获取下拉框选中项的显 ...