码迷,mamicode.com
首页 > 编程语言 > 详细

python学习第十一天,函数,闭包函数,函数名,可迭代对象与迭代器globas()l与locals()

时间:2018-08-26 11:50:53      阅读:179      评论:0      收藏:0      [点我收藏+]

标签:tle   自定义   func   ext   collect   类类型   功能   哪些   变量   

内置函数:

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()

标签:tle   自定义   func   ext   collect   类类型   功能   哪些   变量   

原文地址:https://www.cnblogs.com/jiandanxie/p/9536472.html

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