Python3之迭代器对象,函数,匿名函数

    xiaoxiao2021-10-31  85

    迭代是Python最强大的功能之一,是访问集合元素的一种方式。。 迭代器是一个可以记住遍历的位置的对象。 迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。 迭代器有两个基本的方法:iter() 和 next()。 字符串,列表或元组对象都可用于创建迭代器:

    import sys list1 = [1,2,3,4] it = iter(list1) #创建迭代器对象 while True: try: print(next(it)) except StopIteration: #StopIteration 当迭代到不会有元素的时候,中断 sys.exit()

    在 Python 中,使用了 yield 的函数被称为生成器(generator)。 跟普通函数不同的是,生成器是一个返回迭代器的函数,只能用于迭代操作,简单点理解生成器就是一个迭代器。 在调用生成器运行的过程中,每次遇到 yield 时函数会暂停并保存当前所有的运行信息,返回yield的值。并在下一次执行 next()方法时从当前位置继续运行。

    import sys def fibonacci(n): #生成器函数-斐波那契数列 a,b,counter =0,1,0 while True: if (counter >n): return yield a a,b =b,a+b counter +=1 f = fibonacci(10) #f 是一个迭代器,由生成器返回生成 while True: try: print (next(f),end=" ") except StopIteration: sys.exit()

    函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段

    def change(mlist): "修改传入的列表" mlist.append([1,3,5]) print("函数内部:",mlist) return #调用change函数 mlist = [10,26,58] change(mlist) print("函数外取值:",mlist) #传入函数的和在末尾添加新内容的对象用的是同一个引用。故输出结果如下:

    #参数有必须参数,关键字参数,默认参数,不定长参数 def change(str): "打印字符串" print("str:",str) return def change2(name,age): #关键字参数 "打印字符串" print("name:",name) print("age:",age) return def change3(name,age=18): #默认参数 "打印字符串" print("name:",name) print("age:",age) return def changeInfo(args1,*vartuple): #不定长参数 print("args1:",args1) for var in vartuple: print("var:",var,end=" ") return #调用change函数 change(str = "Hello world!") change2(age=30,name="jack") change3(name="Tom") change2(age=30,name="Herry") changeInfo("Axp") changeInfo(10,2,6,"Tom")

    python 使用 lambda 来创建匿名函数。 所谓匿名,意即不再使用 def 语句这样标准的形式定义一个函数。 lambda 只是一个表达式,函数体比 def 简单很多。 lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去。 lambda 函数拥有自己的命名空间,且不能访问自有参数列表之外或全局命名空间里的参数。 虽然lambda函数看起来只能写一行,却不等同于C或C++的内联函数,后者的目的是调用小函数时不占用栈内存从而增加运行效率。

    转载请注明原文地址: https://ju.6miu.com/read-677919.html

    最新回复(0)