一、函数名的应用(第一类对象)

  函数名是一个变量,但它是一个特殊的变量,与括号配合可以执行函数变量。

  1.函数名的内存地址

def func():print("哈哈")
print(func)  #<function func at 0x000002750A7998C8>

  2.函数名可以赋值给其他变量

def func():print("哈哈")
print(func)
a = func  #把函数当成一个变量赋值给另一个变量
a()     #函数调用 func()
#<function func at 0x00000211E56198C8>
#哈哈

  3.函数名可以当做容器类的元素

def func1():print("哈哈")
def func2():print("哈哈")
def func3():print("哈哈")
def func4():print("哈哈")
lst = [func1,func2,func3]
for i in lst:i()
# 哈哈
# 哈哈
# 哈哈

View Code

  4.函数名可以当函数的参数

def func():print("吃了么")
def func2(fn):print("我是func2")fn()print("我是func2")
func2(func)        #把函数func当成参数传递给func2的参数fu
# 我是func2
# 吃了么
# 我是func2

View Code

  5.函数名可以当作函数的返回值

 

def func_1():print("这里是函数1")def func_2():print("这里是函数2")print("这里是函数1")return func_2
fn = func_1()     #执行函数1,函数1返回的是函数2,这时fn指向的就是上面的函数2
fn()        #执行上面返回的函数
# 这里是函数1
# 这里是函数1
# 这里是函数2

View Code

二、闭包

  闭包:在内层函数中访问外层函数的局部变量

  优点:

        1保护你的变量不受外界影响

        2.可以让变量常驻内存

   写法:

      def outer():

        a = 10

        def inner():

          print(a)

        retunt inner

   判断方法:

def func():a = 10def inner():print(a)print(inner.__closure__) # 如果打印的是None. 不是闭包. 如果不是None, 就是闭包

func()

三、迭代器

    使用dir来查看该数据包含了哪些方法

print(dir(str))
#结果
['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmod__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'capitalize', 'casefold', 'center', 'count', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'format_map', 'index', 'isalnum', 'isalpha', 'isdecimal', 'isdigit', 'isidentifier', 'islower', 'isnumeric', 'isprintable', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'maketrans', 'partition', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill']

View Code

    用来遍历列表,字符串,元组...等等可迭代对象

    可迭代对象:Iterable,里面有__iter__()可以获取迭代器,没有__next__()

    迭代器:  Iterable,里面有__iter__()可以获取迭代器,还有__next__()

    迭代器的特点:

        1.只能向前

        2.惰性机制

        3.省内存(生成器)

    for循环的内部机制

        1.首先获取到迭代器

        2.使用while循环获取数据

        3.it.__next__()来获取数据

        4.处理异常 try:xxx  except StopIteration:

s = "我是一名小画家"
it = s.__iter__()
while 1:try:el = it.__next__()print(el)except StopIteration:break
# 我
# 是
# 一
# 名
# 小
# 画
# 家

View Code

    判断方法:

s = "abc"
it = s.__iter__()
#第一种方法
print("__iter__" in dir(it))  #输出是Ture说明是可迭代对象
print("__next__" in dir(it))  #输出是Ture说明是迭代器
#第二种方法
from collections import Iterable
from collections import Iterator
print(isinstance(it,Iterable))  #判断是不是可迭代对象
print(isinstance(it,Iterator))  #判断是不是迭代器

View Code

转载于:https://www.cnblogs.com/qq849784670/p/9455752.html

python函数名的应用、闭包和迭代器相关推荐

  1. python函数名的运用,闭包,迭代器

    一.函数名的运用 函数名是一个变量,但它是一个特殊的变量,与括号配合可以执行函数的变量. 1.函数名的内存地址 1 def func(): 2 print("呵呵") 3 prin ...

  2. python函数闭包的应用_python学习第10天----函数名应用、闭包、迭代器

    1.函数名的应用 1)如果直接打印函数名,打印出的为函数的地址 deffunc():print("你好,世界")print(func) 输出: View Code #可将函数赋值给 ...

  3. python函数名第一类方法、f-string格式化、迭代器及递归函数

    函数第一类方法 函数名可以赋值给其他变量 def func():print(1) a = func a() # 结果:1 函数名可以当做容器类的元素 def func1():print(1) def ...

  4. python函数名的语法_Python 基础语法六 ——函数

    一个程序可以按不同的功能实现拆分成不同的模块,而函数就是能实现某一部分功能的代码块. 1.函数的概述 定义:在Python中,定义个函数要使用 def 语句,一次写出函数名.括号.括号中的参数和冒号( ...

  5. python函数名与变量名可以一样吗_python--第一类对象,函数名,变量名

    一 . 第一类对象 函数对象可以像变量一样进行赋值 , 还可以作为列表的元素进行使用 可以作为返回值返回 , 可以作为参数进行传递 def func(): def people(): print('金 ...

  6. 8月30日学习内容整理:命名空间,作用域,函数名本质,闭包

    补充: 三元运算:c= a if a>b else b  相当于:  if  a>b: c=a else: c=b 结构;  if条件成立的结果  if  条件  else  if条件不成 ...

  7. Python 函数基础与进阶 闭包 聚合与打散

    阅读目录 函数基础 基础知识 return 返回值 不可变类型和可变类型的值传递问题 函数的参数 打散和聚合 函数进阶 函数的注释 命名空间 作用域和全局变量 函数的嵌套和作用域链 函数名 闭包 函数 ...

  8. Python函数名的本质,你有了解过嘛?

    函数名实质上就是函数的内存地址 def wrapper():passprint(wrapper) 1.引用是什么? 当我们定义a=1的时候,系统会开辟一块内存空间来保存1,然后用a变量名保存1所在的内 ...

  9. Python函数名的第一类对象及使用

    函数名的第一类对象只是一种称呼,是相对于第二类对象而言的.我们目前用到的函数基本都是第一类对象. 函数名的第一类对象主要有四个方面的应用: 函数名可以当作值赋值给一个变量 函数名可以当做另一个函数的参 ...

最新文章

  1. Android电影票座位几排几列 数据获取
  2. R语言glmnet交叉验证选择(alpha、lambda)拟合最优elastic回归模型:弹性网络(elasticNet)模型选择最优的alpha值、模型最优的lambda值,最终模型的拟合与评估
  3. Qt中树形结构显示目录结构
  4. “数据库审计”关键词,重回Google第一位置
  5. 2019年,SD-WAN的回顾与展望
  6. 成功解决FileNotFoundError: [WinError 2] 系统找不到指定的文件。
  7. struts练习-表单提交
  8. 工业4.0的小小思考
  9. 清除error.log、access.log并限制Apache日志文件大小的方法
  10. java and dsl_Groovy语法糖以及DSL
  11. Mybatis(14)多表查询
  12. java三种功能加强模式
  13. [福大软工] Z班——Beta现场答辩反馈
  14. 多模光纤与单模光纤熔接及用哪种光模块的问题。
  15. 关于视频后期美白的一些事
  16. 体重 年龄 性别 身高 预测鞋码_用身高和体重数据进行性别分类的实验报告
  17. 《见识》----吴军博士,读书笔记
  18. 8种CSS3按钮动画特效【附源码】
  19. 论文笔记:Intention Oriented Image Captions with Guiding Objects
  20. Xshell密钥认证

热门文章

  1. 初次使用uwsgi:no python application found, check your startup logs for errors
  2. css3 Gradient背景
  3. 操作可能会破坏运行时稳定性的解决办法
  4. 为什么模板函数的声明和实现都放在.h文件中
  5. Response JSON数据返回
  6. nmon监控Linux服务器系统资源
  7. form表单target实现当前页表单提交而不进行跳转刷新
  8. tensorflow随笔——简单的循环神经网络分类实例
  9. 结合CmakeList来更好地理解windows下的动态库和静态库
  10. python解析xml存入字典_如何将xml字符串转换为字典?