Python(函数名,可迭代对象,迭代器) 一.默认参数的坑 # 比较特殊,正常来说临时空间执行结束后应该删除,但在这里不是. def func(a,l=[]): l.append(a) return l print(func(1)) # [1] print(func(2)) # [1,2] print(func(3)) # [1,2,3] 二.函数名的应用 函数名指向的是函数的内存地址,加上()就执行这个函数 def func(args): return args print(func) #…
一,可迭代的&可迭代对象 1.一个一个的取值就是可迭代的   iterable#str list tuple set dict#可迭代的 ——对应的标志 __iter__ 2.判断一个变量是不是一个可迭代的 # print('__iter__' in dir(list))# print('__iter__' in dir([1,2,3])) 3.可迭代协议——凡是可迭代的内部都有一个__iter__方法 二,迭代器 1.将可迭代的转化成迭代器 #!/usr/bin/env python #_*_…
一,生成器表达式 #生成器表达式比列表解析更省内存,因为惰性运算 #!/usr/bin/env python #_*_coding:utf-8_*_ new_2 = (i*i for i in range(100)) #生成器表达式 print(list(new_2)) #注意括号是小括号 对比 #!/usr/bin/env python #_*_coding:utf-8_*_ # egg_list=['鸡蛋%s' %i for i in range(10)] 列表推倒式 # print(egg…
一,内置函数 #内置的模块#拿过来直接就用的:内置的函数 #!/usr/bin/env python #_*_coding:utf-8_*_ #内置的模块 #拿过来直接就用的:内置的函数 #作用域相关(2)(了解) #1.globals()==获取全局变量的字典 #2.locals()==获取执行方法所在命名空间内的局部变量的字典 #str类型代码执行相关(3) #1.eval()==将字符串类型的代码执行并返回结果==(掌握) #print(eval('1+2+3+4')) #print(ev…
一,装饰器本质 闭包函数 功能:就是在不改变原函数调用方式的情况下,在这个函数前后加上扩展功能 作用:解耦,尽量的让代码分离,小功能之前的分离. 解耦目的,提高代码的重用性 二,设计模式 开放封闭原则 *对扩展是开放的 *对修改是封闭的 三,代码解释 *通用代码 #!/usr/bin/env python #_*_coding:utf-8_*_ def timmer(func): #---> jjj def inner(*args,**kwargs): ret = func(*args,**kw…
一,匿名函数 #简单的需要用函数去解决的问题 匿名函数的函数体 只有一行#也叫lambda表达式# cal2(函数名) = lambda n(参数) : n*n(参数怎么处理,并且返回值)#参数可以有多个,用逗号隔开#匿名函数不管逻辑多复杂,只能写一行,且逻辑执行结束后的内容就是返回值#返回值和正常的函数一样可以是任意数据类型1.函数和匿名函数 #!/usr/bin/env python #_*_coding:utf-8_*_ def cal(n): return n*n print(cal(1…
一,什么叫递归 #递归#在一个函数里调用自己#python递归最大层数限制 997#最大层数限制是python默认的,可以做修改#但是我们不建议你修改 例子和尚讲故事 #!/usr/bin/env python #_*_coding:utf-8_*_ #:基础版本 def story(): print("从前有座山,山里有座庙,庙里有个老和尚讲故事,讲的什么呀?") while True: story() #:递归版本 def story(): #递归函数,在一个函数内调用自己 #最大…
一,命名空间 #局部命名空间#全局命名空间#内置命名空间 #三者的顺序#加载顺序       内置命名空间(程序运行前加载)->全局命名空间(程序运行中:从上到下加载)->局部命名空间(程序运行中:调用时才加载) 取值 *在局部调用:局部命名空间>全局命名空间>内置命名空间 #!/usr/bin/env python #_*_coding:utf-8_*_ max = 1 def f(): print(max) #局部调用max会找全局max=1,如果没有就会打印内置max f()…
[转]Python之函数进阶 本节内容 上一篇中介绍了Python中函数的定义.函数的调用.函数的参数以及变量的作用域等内容,现在来说下函数的一些高级特性: 递归函数 嵌套函数与闭包 匿名函数 高阶函数 内置函数 总结 一.递归函数 函数是可以被调用的,且一个函数内部可以调用其他函数.如果一个函数在内部调用本身,这个函数就是一个递归函数.函数递归调用的过程与循环相似,而且理论上,所有的递归函数都可以写成循环的方式,但是递归函数的优点是定义简单,逻辑清晰.递归和循环都是一个重复的操作过程,这些重复…
在python中,可迭代对象&迭代器&生成器的关系如下图: 即:生成器是一种特殊的迭代器,迭代器是一种特殊的可迭代对象. 可迭代对象 如上图,这里x是一个列表(可迭代对象),其实正如第一张图所示,可迭代对象包含范围很广,如list是可迭代对象,dict是可迭代对象,set也是可迭代对象: 可迭代对象必须含有__iter__方法,该方法返回一个迭代器对象.上图中,y和z是通过可迭代对象x利用iter方法得到的两个迭代器. 迭代器 迭代器内部持有一个状态,该状态用于记录当前迭代所在的位置,以方…