python--第一类对象,函数名,变量名
一 . 第一类对象
函数对象可以像变量一样进行赋值 , 还可以作为列表的元素进行使用
可以作为返回值返回 , 可以作为参数进行传递

def func():
def people():
print('金_卡戴珊')
print('oh,yes!')
print('oh,baby!')
return people
ret = func()
ret()

二 . 闭包
闭包 -> 函数的嵌套
内层函数对外层函数中的变量的使用
好处:
1. 保护变量不被侵害
2. 让一个变量常驻内存
如何通过代码查看一个闭包
__closure__: 有东西就是闭包. 没东西就不是闭包

def wrapper():
name = "周杰伦" # 局部变量常驻与内存
def inner():
print(name) # 在内层函数中使用了外层函数的局部变量
print(inner.__closure__) # 有东西就是闭包
return inner # 返回函数名
# inner()
ret = wrapper() # ret是一个内层函数
ret() # ret是inner, 执行的时机是不确定的, 必须保证里面的name必须存在

三 . 迭代器
迭代器 -> 固定的思路. for循环
一个数据类型中包含了__iter__函数表示这个数据是可迭代的
dir(数据): 返回这个数据可以执行的所有操作
判断迭代器和可迭代对象的方案(野路子)
__iter__ 可迭代的
__iter__ __next__ 迭代器

lst =['吴彦祖','谢霆锋','阿汤哥','郭达','岳云鹏']
it = lst.__iter__()
print(it.__next__())
print(it.__next__())
print(it.__next__())
print(it.__next__())
print(it.__next__())
print(it.__next__())

判断迭代器和可迭代对象的方案(官方)
from collections import Iterable, Iterator
isinstance(对象, Iterable) 是否是可迭代的
isinstance(对象, Iterator) 是否是迭代器

lst = [1,2,3]
# print(lst.__next__()) print(isinstance(lst, Iterable)) # xxx是否是xxx类型的. True
print(isinstance(lst, Iterator)) # False it = lst.__iter__() # 迭代器一定可迭代, 可迭代的东西不一定是迭代器 print(isinstance(it, Iterable)) # xxx是否是xxx类型的. True
print(isinstance(it, Iterator)) # True

模拟for循环

lst = ["海尔兄弟", "阿童木", "葫芦娃", "舒克贝塔", "大风车"]
# 模拟for循环 for el in lst:
it = lst.__iter__() # 获取到迭代器0
while 1: # 循环
try: # 尝试
el = it.__next__() # 那数据
print(el)
except StopIteration: # 出了错误, 意味着数据拿完了
break # 结束循环

python--第一类对象,函数名,变量名的更多相关文章
- python 第一类对象 闭包 迭代器
########################总结########################### 1. 函数名 -> 第一类对象 函数名就是变量名. 函数可以赋值 函数可以作为集合类的 ...
- python第一类对象,闭包,迭代器
一.第一类对象 第一类对象 -> 函数名 -> 变量名 1.特征: 函数对象可以像变量一样进行赋值 还可以作为列表的元素进行使用 还可以作为返回值返回 还可 ...
- python之路--第一类对象,函数名,变量名
一 . 第一类对象 函数对象可以像变量一样进行赋值 , 还可以作为列表的元素进行使用 可以作为返回值返回 , 可以作为参数进行传递 def func(): def people(): print('金 ...
- python --- 11 第一类对象 函数名 闭包 迭代器
一 .函数名的运用 ①函数名是⼀个变量, 但它是⼀个特殊的变量, 与括号配合可以执⾏函数的变量 ②函数名是一个内存地址 ③ 函数名可以赋值给其他变量 ④函数名可以当做容器类 ...
- python之路---11 第一类对象 函数名 闭包 迭代器
二十九. 1.函数名的运用 ①函数名是⼀个变量, 但它是⼀个特殊的变量, 与括号配合可以执⾏函数的变量 ②函数名是一个内存地址 ③ 函数名可以赋值给其他变量 ④函数名可以当 ...
- 第一类对象-> 函数名 -> 变量名
函数对象对象可以像变量一样进行赋值 还可以作为列表的元素进行使用 可以作为返回值返回 可以作为参数进行传递 # def fn(): # print("我叫fn") # fn() # ...
- python以下划线开头的变量名含义
Python核心风格:避免用下划线作为变量名的开始. 因为下划线对解释器有特殊的意义,而且是内建标识符所使用的符号,我们建议程序员避免用下划线作为变量名的开始.一般来讲,变量名_xxx被看作是“私有的 ...
- 二、Python基础(input、变量名、条件语句、循环语句、注释)
一.input用法 input在Python中的含义为永远等待,直到用户输入了值,从而将所输入的值赋值另外的一个东西. n=input('请输入......') 接下来用一个例子学习input的用法 ...
- Python中的函数与变量
本节内容 函数的定义方法 函数功能 函数的返回值 函数的形参与实参 全局变量与局部变量 递归 函数的作用域 匿名函数lambda 函数式编程 常用内置函数 其他内置函数 函数 函数的定义方法 函数就相 ...
随机推荐
- nutzboot dubbo zookeeper简单使用
提供方和消费方properties 配置基本差不多 nutz.application.name这个值不一样 提供方配置自动端口就行server.port=0 消费方一般需要对外提供web服务配置ip和 ...
- DRF教程3-类视图
Rewriting our API using class-based views 使用类视图重写root views,只需要一点点重构. from django.http import Http40 ...
- 深度学习环境搭建(Ubuntu16.04+GTX1080Ti+CUDA8.0+Cudnn6.0+TensorFlow+Caffe2(Pytorch))
OS System:Ubuntu16.04 GPU Device:GTX1080Ti Softwares:CUDA8.0.Cudnn6.0.TensorFlow(1.4.0).Caffe2(1.0.0 ...
- Tinghua Data Mining 3
特征选择 男女身高 男女抽烟 先验分布 熵 衡量系统的不确定性 属性的价值 降低了不确定性 降低的幅度越高越好 主成分分析 旋转是的数据间的correlation消失掉 Q是正交阵 七长八短,长宽相关 ...
- 使用Hexo 搭建自己的博客
使用Hexo 搭建自己的博客 最近一直都想着如何去搭建属于自己的博客,有空的时候就写写文章什么的. 本人对该博客系统的要求是: 博文的编写要采用现在流行的MarkDown来进行编写. 本人还不想去注册 ...
- CF #541div2 D
题目本质:形成一个拓扑图,不应带自环. 解决方法: 1.先把等于号的部分用dsu缩点: 2.大于和小于号建立拓扑关系: 3.n*m的矩阵,只要用标号n+j代表m集合的第j个就从二维降到一维了: 4.d ...
- 084 Largest Rectangle in Histogram 柱状图中最大的矩形
给出 n 个非负整数来表示柱状图的各个柱子的高度,每个柱子紧挨彼此,且宽度为 1 .您的函数要能够求出该柱状图中,能勾勒出来的最大矩形的面积. 详见:https://leetcode.com/prob ...
- 实现如下语法的功能:var a = add(2)(3)(4)
function add(num){ var _add = function(args){ num+=args; return arguments.callee; } _add.toString = ...
- Android LitePal介绍与使用说明
LitePal for Android LitePal是一个Android开源库,它使开发者使用SQLite数据库变得非常容易. 你可以不用写一句SQL语句就可以完成大部分数据库操作,包括创建表,更新 ...
- CSS布局之-高度自适应
何为高度自适应? 高度自适应就是高度能跟随浏览器窗口的大小改变而改变,典型的运用在一些后台界面中上面一栏高度固定用作菜单栏或导航栏,下面一栏高度自适应用于显示内容.高度自适应不像宽度自适应那样简单,在 ...