python学习第十一天,函数,闭包函数,函数名,可迭代对象与迭代器globas()l与locals()
Posted jiandanxie
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python学习第十一天,函数,闭包函数,函数名,可迭代对象与迭代器globas()l与locals()相关的知识,希望对你有一定的参考价值。
内置函数:
dir(str)或dir(‘alex‘) --->看该类型内置的方法有哪些,返回一个列表
dict.__iter__() 或 iter(dict) --->将可迭代对象转换为迭代器
iter1.__next__() 或 next(iter1)--->将迭代器里面的元素一一输出
globals()
locals()
引入模块判断某个对象是否是可迭代对象,或是迭代器
from collections import Iterator
print(isinstance(‘alex,Iterator))---->判断是否是迭代器
from collections import Iterable
print(isinstance(‘alex‘,Iterable))--->判断是否是可迭代对象
跳过Bug:
try: #跳过报错
pass
expect StopIteration
pass
1.break 打破for循环
list1 = [1,2,3] for i in list1: print(i) if i == 1: break
2.函数的理解:
内置函数
自定义函数:一般用完即在内存中清除,除了闭包函数
python可以非常灵活地自定义函数,函数可以被多次调用
3.函数名(函数对象)的应用场景:函数名指向函数的内存地址,函数名加括号就是函数的调用
------->函数名是第一类对象
a.函数名可以作为值,被赋值给另外一个变量(一般调用函数时用)
def func(): pass f = func f()
b.函数名可以作为函数的参数(在函数中调用另外一个函数用)
def func1(): print(666) def func2(s): s() func2(func1)
c.函数名可以当做函数的返回值(闭包函数时)
def wraaper(): def inner(): print(666) return inner ret = wraaper() ret()
d.函数名可以当做容器类类型里面的元素(一次性调用多个函数)
def func1(): print(1) def func2(): print(2) def func3(): print(3) list1 = [func1,func2,func3] for i in list1: i()
3.闭包函数:
运用:爬虫,装饰器
4.globals()与locals()
加括号的叫做函数:globals(),locals()
不加括号的叫做属性global,nonlocal
区分:
globals():仅返回全局的和内置的变量,构成一个字典
local():返回当前位置的变量,构成一个字典
def func1(): a = 2 b = 3 print(globals()) print(locals()) def inner(): c = 5 d = 6 print(globals()) print(locals()) inner() func1()
def func(): a = 3 b = 4 print(locals()) print(globals()) func() a = 1 b = 2 print(globals()) print(locals())
5.可迭代对象和迭代器(python中一切皆对象)
可迭代对象的判断:该对象内置有__iter__方法的,就是可迭代对象
(str,list,dict,ret,tuple,range())
迭代器的判断:该对象内置有__iter__方法,和__next__方法的,就是迭代器
(句柄f)
1.手动转换:
list1 = [1,2,3] iter1 = list1.__iter__() print(iter1.__next__())
2.for循环自动转换
list1 = [1,2,3] for i in list1: print(i)
用while循环模拟for循环的的自动转换过程
list1 = [1,2,3] iter1 = list1.__iter__() while 1: try: print(iter1.__next__()) except StopIteration break
迭代器的特性:
1.迭代器在内存中开辟一个内存地址,每次只取一个值:(可以处理大数据)
然而可迭代对象在读取时开辟N个地址,会占用内存
2.迭代器的取值是单向的,不能倒退,可以有记录节点的功能
以上是关于python学习第十一天,函数,闭包函数,函数名,可迭代对象与迭代器globas()l与locals()的主要内容,如果未能解决你的问题,请参考以下文章
python之路---11 第一类对象 函数名 闭包 迭代器
python之路---11 第一类对象 函数名 闭包 迭代器