python之路--第一类对象,函数名,变量名
2024-10-08 08:08:46
一 . 第一类对象
函数对象可以像变量一样进行赋值 , 还可以作为列表的元素进行使用
可以作为返回值返回 , 可以作为参数进行传递
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:字符串转换成字节的三种方式
- Nginx
- EASYUI 表单(FORM)用法
- MySQL 半同步复制
- shaerpoint designer 无法创建 visio 2013工作流
- Java虚拟机的内存组成以及堆内存介绍
- 【转载】extern ";C";的用法解析(原博主就是抄百度百科的,不如另外一篇好)
- HDU1005 数列找规律
- Python join()方法
- IO流的应用————小型资源管理器
- 免费 Bootstrap 管理后台模块下载
- Linux/UNIX环境下Oracle数据库多实例开机启动脚本(转)
- iostat查看io情况(监控Linux的8种方式)
- 大数据系列修炼-Scala课程04
- Lumen 配置、重写、404错误等
- css FlexBox 弹性盒子常用方法总结
- websocket 的客户端 websocket-sharp
- Linux驱动之异步OR同步,阻塞OR非阻塞概念介绍
- Django admin模块无法调用css样式文件
- Qt中漂亮的几款QSS
热门文章
- 实现ppt幻灯片播放倒计时
- 转://Oracle中User和Schema的区别和联系
- linux命令之netstat
- 极端恢复时用到的几个隐藏参数 Oracle hidden corruption recovery parameters
- 启动项目显示:非法字符:'\ufeff' 和需要 class ,interface 或者 enum 错误
- ASP MD5
- NLog配置分享
- JMX,Jstatd做好JVM应用上线的最后一层保障
- 朱晔和你聊Spring系列S1E8:凑活着用的Spring Cloud(含一个实际业务贯穿所有组件的完整例子)
- Mac 小记 — 杂录