通过 lst.__iter__()拿到lst.的迭代器

1.函数名第一类对象
函数名就是变量名
1.函数名可以像变量一样互相赋值.
2.可以作为函数的参数,进行传递
3.可以作为返回值返回
4.可以作为集合的元素进行存储
-----------------------------------------------------
def 函数名(形参):
  函数体 函数名(实参) # ()表示调用 #实参必须和形参对得上 函数名的内存地址:
def func():
print('呵呵')
print(func) 结果:
<function func at 0x1101e4ea0>
-----------------------------------------------------
def func_1():
print("这⾥是函数1")
def func_2():
print("这⾥是函数2")
print("这⾥是函数1")
return func_2 fn = func_1() # 执⾏函数1. 函数1返回的是函数2, 这时fn指向的就是上⾯函数2
fn()
-----------------------------------------------------
----------------------------------------------------- 2.闭包(函数的嵌套,返回函数名)
闭包:内层函数对外层函数(非全局)的变量的引用
用__closure__检测函数是否闭包 函数名.__closure__返回cell就是闭包,返回None就不是闭包 作用:
1.保护变量
2.常驻内存
基本写法:
def outer():
a = 10
def inner():
return a
return inner -----------------.__closure__检测函数是否闭包------------------------------------
def func1():
name = "alex"
def func2():
print(name) # 闭包
func2()
print(func2.__closure__) # (<cell at 0x10c2e20a8: str object at
0x10c3fc650>,)
func1() ----------------在函数外调用内部函数-----------------------------
def outer():
name = 'alex'
def inner(): #内部函数
print(name)
return inner fn = outer() #访问外部函数,获取到内部函数的函数地址
fn() #访问内部函数
-------------------多层嵌套--------------------------
def func1():
def func2():
def func3():
print('嘿嘿')
return func3
return func2 func1()()() ----------------------------------------------------- 3.迭代器
1. Iterable: 可迭代对象. 内部包含__iter__() 函数
2. Iterator: 迭代器. 内部包含__iter__() 和 __next__() 函数 特点:
1.节省内存
2.惰性机制(只有执行__next__()才会取值)
3.只能向前,不能反复 dir() 查看数据可以执行的方法,查看内置属性
isinstance() 判断XX对象是否是XXX类型
-------------------------dir()----------------------------
print(dir(dict))
print(dir(open('a.txt'))) #打印内容有 __iter__表示可迭代, 对象中有__iter__代表对象遵守可迭代协议
   print('__iter__' in dir(str)) #可迭代True,不可迭代False
----------------------isinstance()-------------------------------
l = [1, 2, 3]
l_iter = l.__iter__() #__iter__()获取迭代器
from collections import Iterable
from collections import Iterator
print(isinstance(l, Iterable)) # True
print(isinstance(l, Iterator)) # False
print(isinstance(l_iter, Iterable)) # True
print(isinstance(l_iter, Iterator)) # True ----------------------------------------------------------------------------
# 迭代器给所有的数据类型提供了一种统一的遍历的方式(可迭代协议), Iterable, __iter__()
# lst = [1, 2, 3, 4, 5]
# # print("__iter__" in dir(lst))
# # print("__next__" in dir(lst)) -----------用迭代器中的__next__()获取迭代器中的元素------------------------------------------
s = '我爱健身'
c = s.__iter__() #获取迭代器
print(c.__next__()) #使用迭代器进行迭代,获取第一个元素 我
print(c.__next__()) #爱
print(c.__next__()) #健
print(c.__next__()) #身
print(c.__next__()) #StopIteration --------------※※使用while循环和迭代器模拟for循环※※重要,必须掌握---------------------------------------
# for i in [1, 2, 3]:
# print(i) lst = [1, 2, 3]
lst_iter = lst.__iter__()
while 1:
try:
i = lst__iter.__next__()
print(i)
except StopIteration:
break ----------------------------------------------------- for循环内部用的是迭代器
lst = [1, 2, 3]
it = lst.__iter__()
while1:
try:
it.__next__()
except StopIteration:
break -------函数名可以当做函数的参数------------------------------------
def func1():
print("我是一个单纯的函数") def func2(abc): # abc接收到的是一个函数的内存地址
abc() # 执行func1, func1()
print("我是func2", abc) # a = "苹果" func2(func1)
-----------------------------------------------------
# def panpan():
# print("我是潘潘. 我喜欢 ")
#
# def xiaoping():
# print("我是小萍萍. 我喜欢 ")
#
# def xiaohua():
# print("我是小花花. 我喜欢 ")
#
# def daguanren():
# print("大官人喜欢xxxx")
#
# def wangpo(nv, nan): # 核心业务逻辑
# nv()
# nan()
#
# wangpo(xiaohua, daguanren) # 王婆代理了大官人和潘潘 ----------------------查找初始函数名 .__name__ -------------------------------
def chi():
print("我是吃") a = chi
haha = a
hehe = haha
bilibili= hehe bilibili()
print(bilibili.__name__) # 函数名
-----------------------------------------------------
在外界访问内部函数,函数执行完毕后临时空间消失.在内部函数中访问外层函数
中的变量,那这个变量将不会消亡,将会常住内存中,供后面的的程序使用.
# 闭包的应用.保护变量, 常驻内存
from urllib.request import urlopen def func():
# 闭包. content会常驻内存
content = urlopen("http://www.xiaohuar.com/").read()
def inner():
return content
return inner print("加载中...")
g = func() # 网络请求
print("加载完毕")
print(g())
print(g())
print(g()) -----------------------函数的注释------------------------------
def play(wanjv1, wanjv2, wanjv3):
'''
这是一个表示玩儿的函数,可以玩玩具1,玩具2,玩具3,返回心情
:param wanjv1: 玩具1
:param wanjv2: 玩具2
:param wanjv3: 玩具3
:return: 开心
'''
print("我要玩儿荡秋千")
return "开心" # play("独木桥", "独轮车", "独眼龙")
print(play.__doc__) # document 查看注释
print(str.join.__doc__)
-----------------------------------------------------

Day11--Python--函数名,闭包,迭代器的更多相关文章

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

    一.函数名 函数名是一个变量,但它是一个特殊的变量,与括号配合可以执行函数的变量,单纯print()出的是一个内存地址. def func(): print('你说你有点难追') print(func ...

  2. python --- 11 第一类对象 函数名 闭包 迭代器

    一 .函数名的运用    ①函数名是⼀个变量, 但它是⼀个特殊的变量, 与括号配合可以执⾏函数的变量 ②函数名是一个内存地址    ③ 函数名可以赋值给其他变量         ④函数名可以当做容器类 ...

  3. python之路---11 第一类对象 函数名 闭包 迭代器

    二十九. 1.函数名的运用    ①函数名是⼀个变量, 但它是⼀个特殊的变量, 与括号配合可以执⾏函数的变量 ②函数名是一个内存地址    ③ 函数名可以赋值给其他变量         ④函数名可以当 ...

  4. day_10 函数名,闭包,迭代器

    1. 函数名的使用 1.函数名是一个变量,函数名储存的是函数的内存地址 2.函数名可以赋值给其他变量 3.函数名可以当容器类对象的元素 4.函数名可以当其他函数的参数 5.函数名可以做函数的返回值 2 ...

  5. python day11 ——1. 函数名的使⽤ 2. 闭包 3. 迭代器

    ⼀. 函数名的运⽤. 1.函数名的内存地址 def func():    print("呵呵") print(func) 结果: <function func at 0x11 ...

  6. Python基础之 函数名,闭包,和迭代器

    1.函数名作用 函数名本质上就是函数的内存地址或对象. 1.可以被引用 2.可以被当作容器类型的元素 3.可以当作函数的参数和返回值 4.如果记不住的话,那就记住一句话,就当普通变量用 2.闭包 什么 ...

  7. python基础 (函数名,闭包,和迭代器)

    1.函数名作用 函数名本质上就是函数的内存地址或对象. 1.可以被引用 2.可以被当作容器类型的元素 3.可以当作函数的参数和返回值 4.如果记不住的话,那就记住一句话,就当普通变量用 2.闭包 什么 ...

  8. python之函数名,闭包、迭代器

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

  9. day12 python函数名的应用 闭包 迭代器

    day12 python   一.函数名的应用(是第一类对象)     函数名的命名规范和变量是一样的     函数名其实就是变量名 def func():     print('i am funct ...

随机推荐

  1. Linux基础学习(16)--备份与恢复

    第十六章——备份与恢复 一.备份概述 1.Linux系统需要备份的数据: 2.备份策略: 二.dump和restore命令 1.dump命令: 2.restore命令:

  2. ansible的playbook简单使用

    一.介绍 playbook就是一个用yaml语法把多个模块堆起来的一个文件 核心组件: Hosts:执行的远程主机列表Tasks:任务,由模块定义的操作的列表:Varniables:内置变量或自定义变 ...

  3. java.util.concurrent.TimeoutException: Idle timeout expired: 300000/300000 ms

    Request idle timed out at 123000 ms. That means there was no activity (read or write) for 123000 ms ...

  4. 老男孩python学习自修第十天【三元表达式与lambda表达式】

    例如: 1.使用三元表达式给变量赋值 result = '空' if x == None else x 2.使用lambda定义函数 add = lambda x, y: x+y

  5. JavaScript Decorators 的简单理解

    Decorators,装饰器的意思, 所谓装饰就是对一个物件进行美化,让它变得更漂亮.最直观的例子就是房屋装修.你买了一套房子,但是毛坯房,你肯定不想住,那就对它装饰一下,床,桌子,电视,冰箱等一通买 ...

  6. React 学习(一) ---- React Element /组件/JSX

    学习React的时候,你可能听到最多的就是要先学习webpack, babel,要先学会配置然后才能学react 等等,一堆的配置就把我们吓着了,根本就没有心情就学习react了.其实在最开始学习re ...

  7. codeforces630C

    Lucky Numbers CodeForces - 630C 小希称只含7和8的数是幸运数,那么不超过n位的幸运数有多少个? Input 一个整数 n (1 ≤ n ≤ 55) Output 输出幸 ...

  8. poj2112(网络流-最大流+二分)

    题意:给你k个挤奶器,c头牛,每个挤奶器能放m头牛,问你奶牛需要走的最大距离最小是多少: 解题思路:因为最大距离最小,也就是求最小的距离满足所有牛都能到,所以我们先用floyd跑最短路,把所有点之间的 ...

  9. Random Processes

    对于信号处理来说,有一类信号是非常重要的,这类信号就是随机信号(random signal),也被称为随机过程(random processes/stochastic processes).在各种书籍 ...

  10. robotframework测试用例加入注释

    *** Variables ***${HOST} 192.168.132.135${USER} username*** Test Cases ***Simple [Documentation] Sim ...