python函数名与变量名可以一样吗_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--第一类对象,函数名,变量名相关推荐
- python变量名可以用下划线开头吗_python以下划线开头的变量和函数的作用
在python中,我们经常能看到很多变量名以_下划线开头,而且下划线的数量还不一样,那么这些变量的作用到底是什么? 变量名分类: # 以数字.字母开头: 正常的公有变量名 a = 1 def aa() ...
- python变量如何用循环定义_Python学习日记1(变量定义,分支,循环)
学习历程按照Github上jackfrued的100天学习python的进度来进行,再辅上一些自己查找的相关资料. 对应传送门:https://github.com/jackfrued/Python- ...
- python中表达式4**0.5的值为_Python内置函数__用来返回序列中的最小元素
[填空题]表达式 int(4**0.5) 的值为 [判断题]3+4j不是合法的Python表达式. [填空题]已知列表对象x = ['11', '2', '3'],则表达式 max(x) 的值为 [填 ...
- python内置函数可以返回序列中的最大元素_Python内置函数__用来返回序列中的最小元素...
[判断题]不可以在同一台计算机上安装多个Python版本. [判断题]Python是一种跨平台.开源.免费的高级动态编程语言. [填空题]假设列表对象aList的值为[3, 4, 5, 6, 7, 9 ...
- python内置函数next()用来返回文件下一行_Python内置函数 next的具体使用方法
Python 3中的File对象不支持next()方法. Python 3有一个内置函数next(),它通过调用其next ()方法从迭代器中检索下一个项目. 如果给定了默认值,则在迭代器耗尽返回此默 ...
- python函数可以作为容器对象吗_正确理解Python函数是第一类对象
正确理解 Python函数,能够帮助我们更好地理解 Python 装饰器.匿名函数(lambda).函数式编程等高阶技术. 函数(Function)作为程序语言中不可或缺的一部分,太稀松平常了.但函数 ...
- 正确理解Python函数是第一类对象
正确理解 Python函数,能够帮助我们更好地理解 Python 装饰器.匿名函数(lambda).函数式编程等高阶技术. 函数(Function)作为程序语言中不可或缺的一部分,太稀松平常了.但函数 ...
- python中的object是什么意思_Python函数是所谓的第一类对象(First-Class Object)是什么鬼?...
之前写过一篇关于装饰器的文章,虽然写得还算不错,但是也有不少同学表示没看懂,我大概分析了其中的原因,主要问题是他们不理解函数,因为Python中的函数不同于其它语言. 正确理解 Python函数,能够 ...
- 指向常对象的指针变量
//首先了解指向常变量的指针变量,然后再进一步研究指向常对象的指针变量. //定义一个指向常变量的指针变量ptrconst char * ptr; //定义指向常变量的指针变量的一般形式为const ...
最新文章
- 首次使用mysql_mysql的初次使用操作
- Tokyo Tyrant(TTServer)系列(三)-Memcache协议
- DL之CNN:基于CRNN_OCR算法(keras,CNN+RNN)利用数据集(torch,mdb格式)训练来实现新图片上不定长度字符串进行识别—训练过程
- API网关正在经历身份危机
- [资源分享] TensorFlow 官方中文版教程来了
- 云+X案例展 | 民生类:浪潮云打卡人间仙境张家界
- 程序员过端午的正确姿势,一般人看不懂
- 华为云ModelArts 2.0全面升级,革新传统AI开发模式
- Spark MLlib中的协同过滤
- poj2485poj2395 kruskal
- 侍魂胧月传说显示服务器未开启,侍魂胧月传说打开游戏黑屏怎么办 黑屏相关问题解答...
- Visio主题与样式
- 简单地图的实现Android,android开发一:高德地图的简单制作
- Eclipse配置android开发环境详解
- 设置定时器,持续调用接口
- (一)AC6(System Workbench for STM32)简单介绍及创建一个简单的STM32的工程
- 基于HSV颜色空间的辅助车牌定位
- 柱状图中最大的矩形多种解法
- 多张照片怎么做成动图
- 【零基础小白的华丽蜕变】Oracle WebLogic Server 14c(14.1.1.0)下载及安装
热门文章
- 面向对象分析的三个模型与5个层次
- 二、【List、Set、数据结构、Collections】
- 无线连接 服务器,服务器无线远程连接
- go mongodb排序查询_《MongoDB》day two
- bat 发送post请求_get post 请求
- 【Python基础入门系列】第05天:Python函数
- GitHub+Hexo搭建自己的Blog之-本地环境部署01
- opencv3/C++ 机器学习-SVM应用实例:药品(胶囊)识别与分类
- 如何防止头文件被重复包含或引用?
- 动易sitefactory 数据库 mysql msssql_动易SiteFactory配置文件(web.config)常用配置节解读...