码迷,mamicode.com
首页 > 其他好文 > 详细

迭代器

时间:2018-09-18 18:59:58      阅读:237      评论:0      收藏:0      [点我收藏+]

标签:引用   object   需要   gif   问题   print   outer   cad   lap   

1.函数名

  一.函数名的运用

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

  1.函数名的内存地址

技术分享图片
def func():
    print("呵呵")

print(func)

结果:
<function func at 0x1101e4ea0>
View Code

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

技术分享图片
def func():
    print("呵呵")


print(func())

a = func    #把函数当成一个变量赋值给另一个变量
a()          #函数调用 func()
View Code

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

技术分享图片
 1 def func1():
 2     print("呵呵")
 3 
 4 
 5 def func2():
 6     print("呵呵")
 7 
 8 
 9 def func3():
10     print("呵呵")
11 
12 
13 def func4():
14     print("呵呵")
15 
16 
17 lst = [func1, func2, func3]
18 for i in lst:
19     i()
View Code

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

技术分享图片
 1 def func():
 2     print("吃了吗")
 3 
 4 
 5 def func2(fn):
 6     print("我是func2")
 7     fn()     #执行传递过来的fn
 8     print("我是func2")
 9 
10 
11 func2(func)            #把函数func当成参数传递给func2的参数fn
View Code

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

技术分享图片
 1 def func_1():
 2     print("这里是函数1")
 3 
 4     def func_2():
 5         print("这里是函数2")
 6 
 7     print("这里是函数1")
 8     return func_2()
 9 
10 
11 ret = func_1()   #执行函数1,函数1返回的是函数2,这时ret指向的就是上面函数2
12 ret()        #执行上面返回的函数
13                 
View Code

2.闭包

   什么就是闭包?闭包就是内层函数,对外层函数(非全局)的变量的引用.叫闭包

技术分享图片
def func1():
        name = "alex"

        def func2():
                print(name) # 闭包

        func2()


func1()

结果:
alex
View Code
   我们可以使用__closure__来检测函数是否是闭包.使用函数名.__closure__返回cell就是闭包,返回None就不是闭包
技术分享图片
def func1():
        name = "alex"

        def func2():
            print(name)   #闭包

        func2()
        print(func2.__closure__)  #(<cell at 0x0000019E0E3164C8: str object at 0x0000019E0E3A8148>,)



func1()
View Code

  问题,如何在函数外边调用内部函数

技术分享图片
 1 def outer():
 2     name = "alex"
 3 
 4     # 内部函数
 5     def inner():
 6         print(name)
 7 
 8     return inner
 9 
10 
11 ret = outer()            #访问外部函数,获取到内部函数的函数地址
12 ret()                #访问内部函数
13                 
View Code

那如果多层嵌套呢?很简单,只需要一层一层的往外返回就行了

技术分享图片
 1 def func1():
 2     def func2():
 3         def func3():
 4             print("嘿嘿")
 5 
 6         return func3
 7 
 8     return func2
 9 
10 
11 func1()()()
View Code

 

 

3.迭代器

 

迭代器

标签:引用   object   需要   gif   问题   print   outer   cad   lap   

原文地址:https://www.cnblogs.com/Majintao/p/9670084.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!