函数,闭包,迭代器

函数名:函数名可以说是一个变量,但它是一个特殊的变量,因为当它与小括号配合使用时就会执行函数.

1.函数名可以放在列表中使用:

 1 def one():
 2     print(6)
 3 def two():
 4     print(66)
 5 li=[one,two]
 6 for a in li:
 7     a()
 8
 9 输出结果:
10              6
11              66

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

 1 def one():
 2     print(6)
 3 def two(f):
 4     print(66)
 5     f()
 6 two(one)
 7
 8 输出结果:
 9         66
10         6

3.函数可以作为函数的返回值:

 1 def one():
 2     print(6)
 3     def two():
 4         print(66)
 5     return two
 6 f=one()
 7 f()
 8
 9 输出结果:
10         6
11         66

闭包:内层函数对外层函数变量的引用

python规定:如果你在内层函数中访问了外层函数的变量,那么这个变量在使用完并不会马上清空,它将会长期存储到内存中,可以方便你以后再次调用.

1 def one():
2     a=6
3     def two():
4         print(a)
5     return two

这种内层函数需要外层函数的变量时就产生了闭包,

当程序检测到内部函数会用到外部函数的变量时,就会将变量存储到内存中,方便外层函数结束时,内层函数也能正常调用

可迭代对象:Iterable,里面有__iter__()可以获取迭代器,没有__next__()  (注意每处下划线都是两个)

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

用迭代器模拟for循环:

1 #                        #列如我们要循环一个列表
2 a=[1,2,3]
3 li=a.__iter__()#首先获取到迭代器
4 while 1:          #使用while循环获取数据
5     try:            #尝试运行
6         li2=li.__next__()    #通过迭代器获得一个数据
7     except StopIteration:   #处理异常,只能处理写上的异常如(StopIteration)
8         break                        #如果出现这种异常则结束

原文地址:https://www.cnblogs.com/leo-tail-x/p/9456400.html

时间: 2024-11-09 22:49:16

函数,闭包,迭代器的相关文章

第一类对象(函数),闭包及迭代器

第一类对象 函数对象对象可以像变量一样进行赋值 还可以作为列表的元素进行使用 可以作为返回值返回 可以作为参数进行传递 def wrapper(): def inner(): print("alex") return inner # 可以返回函数名 ret = wrapper() ret() # 在函数外访问函数内的函数 闭包 闭包(函数的嵌套) 内层函数对外层函数中的变量的使用 好处: 1. 保护变量不被侵害 2. 让一个变量常驻内存 如何通过代码查看一个闭包 __closure__

闭包函数与迭代器生成器

闭包函数 闭包函数定义 必须是函数内嵌函数 内嵌函数必须引用外函数的变量 外函数返回内嵌函数的函数名 def otter(): name = 'Gredae' def inner(): # 外层函数包了个内层函数 print(name) # 内层函数引用了外层函数的变量 return inner # 外层函数返回内层函数的函数名 f = otter() # 用f变量来接收inner函数的地址 f() # 实际上是调用inner()函数 闭包函数的作用 可以使用函数闭包来实现一个函数的装饰器 函数

函数闭包,装饰器,迭代器

函数闭包 闭包:闭是封闭(函数内部函数),包是包含(该内部函数对外部作用域而非全局作用域的变量引用),闭包指的是:函数内部函数对外部作用域而非全局作用域的引用 import requests def func(url): def get_res(): res=requests.get(url) res.encoding='utf8' print(res.text) return get_res # baidu=func('https://www.baidu.com') # baidu() tao

第十二天-函数名 迭代器

# 函数名的应用:# 函数名命名与变量相同# 函数名就是变量名,一个特殊的变量,与括号配合可以执行函数的变量,函数名存储的是函数的内存地址 # 函数名的内存地址 1 def func(): 2 print("哈哈") 3 4 print(func) # 打印结果:<function func at 0x000002BA13C199D8> 5 # 直接使用函数名得到的是函数名的内存地址 # 函数名可赋值给变量 1 def func(): 2 print("呵呵&qu

11 第一类对象 闭包 迭代器

今日主要内容 第一类对象-> 函数名 -> 变量名 函数对象对象可以像变量一样进行赋值 还可以作为列表的元素进行使用 可以作为返回值返回 可以作为参数进行传递 闭包 -> 函数的嵌套 内层函数对外层函数中的变量的使用 好处: 1. 保护变量不被侵害 2. 让一个变量常驻内存 如何通过代码查看一个闭包 __closure__: 有东西就是闭包. 没东西就不是闭包 迭代器 -> 固定的思路. for循环 一个数据类型中包含了__iter__函数表示这个数据是可迭代的 dir(数据):

python之函数式编程与函数闭包

防伪码:忘情公子著 Python函数式编程: 函数式编程: 也称作泛函编程,是一种编程范型,说白了就是实现可以把函数当参数传递给另一个函数: 它将电脑运算视为数学上的函数计算,并且避免状态以及可变数据: 函数式编程语言最重要的基础是lambda演算,而且lambda演算的函数可以接受函数当作输入和输出 Python支持有限的函数式编程功能: filter(func,seq): 调用一个布尔函数func来迭代遍历每个seq中的元素:返回一个使func返回值为true的元素的序列 In [1]: d

Swift语法基础入门三(函数, 闭包)

Swift语法基础入门三(函数, 闭包) 函数: 函数是用来完成特定任务的独立的代码块.你给一个函数起一个合适的名字,用来标识函数做什么,并且当函数需要执行的时候,这个名字会被用于“调用”函数 格式: func 函数名称(参数名:参数类型, 参数名:参数类型...) -> 函数返回值 { 函数实现部分 } 没有参数没有返回值 可以写为 ->Void 可以写为 ->() 可以省略 Void.它其实是一个空的元组(tuple),没有任何元素,可以写成() func say() -> V

每天一个JavaScript实例-使用带有定时器的函数闭包

<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>每天一个JavaScript实例-使用带有定时器的函数闭包</title> <style> #redbox{ position:absolute; left:100px;

JavaScript进阶系列01,函数的声明,函数参数,函数闭包

本篇主要体验JavaScript函数的声明.函数参数以及函数闭包. □ 函数的声明 ※ 声明全局函数 通常这样声明函数: function doSth() { alert("可以在任何时候调用我"); } 通过这种方式声明的函数属于Window对象,可以在任何地方调用,即在doSth方法的之前和之后都可以调用. 可以在doSth方法之前调用: doSth(); function doSth() { alert("可以在任何时候调用我"); } 可以在doSth方法之