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 func(): #定义一个名为func的函数
-
- def func1(): #定义函数1
- pass
- def func2(): #定义函数2
- pass
- lst = [func1,func2] #将函数作为元素插入列表,注意:这里函数名不加小括号,加小括号是引用函数
- for el in lst:
- el()
- 2)可以作为参数传递给函数.
- def func1(): #定义函数1
- def func():
- pass
- def proxy(fn): #这里的fn现在为函数func
- fn() #结果为fn(func)
- proxy(func) #将函数名func作为参数传递给函数proxy
- 3)可以作为函数的返回值
- def func():
- def fanc():
- def inner(): #3,执行inner函数
- pass
- return inner #2,fanc函数的返回值是inner
- func()() #1,调用func函数
- def fanc():
- 二:闭包
- 什么是闭包:在内层函数中访问外层函数的局部变量.
- def func():
- name = '第一次-光良'
- def func2():
- print(name) #3,函数func2中没有name这个变量,会从外层找这个变量,这就是闭包.
- func2() #2,调用func2函数
- func() #1,调用func函数
- #结果为'第一次-光良'
- def 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 ...
随机推荐
- MySQL文档翻译(八)附英文原文---性能优化概览
优化概述 数据库性能表现依赖于数据库级别的几个因素,比如表,查询和配置设置.这些软件在硬件级别通过CPU和IO操作构筑结果,你需要尽可能的使用最少的资源达到最大的效果.当你专注于数据库的性能表现时,你 ...
- 原创《如何用vue来轻松的驾驭 html5 webapp的页面体验》
由于最近开始要做mobile的webapp 项目,所以利用周末的时间思考了下页面的体验问题,我主要参考了"微信"的页面体验,总结主要有2个页面切换效果(点击进入页面效果 和 返回上 ...
- 将项目添加到服务上时报web modules的错误
将项目添加到服务上时报web modules的错误如下图: 这是tomcat的版本和web modules的版本不支持造成的,如果在如下地方修改不了: 这时候就要在项目的根目录修改如下图: 用工具打开 ...
- P4389 付公主的背包
注意 初始化的时候要这样写 for(int i=1,x;i<=n;i++){ scanf("%d",&x); v[x]++; } for(int i=1;i<= ...
- 关于win10环境下Anaconda python,用pip安装包及升级时SSL报错的问题
刚开始查完以为是网的问题,但是添加信任值\镜像网站\手动下载安装都失败了. 检查后发现python中无SSL模块,检查Anaconda后发现是少加了环境变量Anaconda3\Library\bin, ...
- 支持向量机(Support Vector Machine):超平面
超平面 超平面是 $n$ 维空间的 $n-1$ 维子空间,类似二维空间的直线,三维空间的平面. 分类学习最基本的想法就是基于训练集D在样本空间中找到一个划分超平面,将不同类别的样本分开.以二维空间为例 ...
- Java内存模型探秘
1.Java内存模型概述 Java内存模型是一种抽象概念,不是真实存在的.主要定义了程序中各个变量的访问规则,即在虚拟机中将变量存储到内存和从内存取出变量这样的底层细节.注意:这里的变量仅包括实例字段 ...
- npm ERR! File exists: /XXX/xxx npm ERR! Move it away, and try again.
今天抽空将我的静态服务 ks-server 之前留下的 bug(在node低版本情况下报错)维护了一下. 当我重新 npm link 时,如下错误: npm WARN ks-server@1.0.2 ...
- HDU - 3652
#include<stdio.h> #include<string.h> #include<math.h> #include<time.h> #incl ...
- YARN详解
1.1 分布式资源调度框架 1.2.1 yarn的概念 Apache Hadoop YARN (Yet Another Resource Negotiator,另一种资源协 ...