def test(): print("start") i = 0 while i<3: temp = yield i print(f"temp:{temp}") i += 1 print('end') return "done" if __name__ == '__main__': a = test() # 调用函数就是产生了一个生成器对象 print(type(a)) print(a.__next__())
结果如下:
next方法不是唤醒吗?
调用一次后,为什么没有打印出
temp:None的结果?,很迷惑?
import re pattern = r"\\\n\d{3,}" s=r"\\\n123" print(s) v=re.match(pattern,s) print(v)
老师,这里如果s也用r标识原始字符串,则返回None,这里怎么理解?
#coding=utf-8 from collections.abc import Iterator class Ite: def __iter__(self): self.num = 0 return self #返回自身 def __next__(self): if self.num<3: self.num += 1 return self.num else: raise StopIteration myclass = Ite() #实例化对象为可迭代对象,因为类中既有iter方法,又有next方法 print(isinstance(myclass,Iterator)) #True myiter = iter(myclass) print(isinstance(myiter,Iterator))#True print(next(myiter)) print(next(myiter)) print(next(myiter)) print(next(myiter)) #报错
老师,第14行判断myclass为迭代器,后面为何又要加一个iter函数来让它变成迭代器,不是可迭代对象才需要加iter方法么?
#coding=utf-8 #带参数的装饰器 def mylog(type): def decorator(func): def infunc(*args,**kwargs): if type=="文件": print("文件中:日志记录") else: print("控制台,文件记录") return func(*args,**kwargs)#此处return 可以省略 return infunc return decorator @mylog("文件") def fun2(a,b): print("使用功能2",a,b) print("--------我是分割线-----------") if __name__ == '__main__': fun2(11,22)
老师,请问第10行,那个return有什么用啊,之前老师讲的闭包和装饰器在这个位置好像没有return,我删掉了也可以正常执行。
#coding=utf-8 #本次内容,为装饰器的基础 def outfunc(func): def infunc(): print("日志纪录...") func() return infunc def fun1(): print("使用功能1") def fun2(): print("使用功能2") fun1 = outfunc(fun1) #无返回结果 fun1() #实现增加功能 fun2 = outfunc(fun2) fun2()
老师,这里可不可以理解为,当fun1作为参数传入到outfunc中后,变成类似于自由变量的东西,所以在调用新的fun1并执行infunc时,infunc中的func()语句执行了自由变量fun1,才会打印出原来的“使用功能1”,可不可以这样理解?
# 本次内容是装饰器的基础 def outfunc(func): def infunc(*args, **kwargs): print("日志记录 start...") func(*args, **kwargs) print("日志记录 end...") return infunc def func1(): print("使用功能1") def func2(a,b,c): print("使用功能2", a, b, c) print(id(func1)) func1 = outfunc(func1) print(id(func1)) func1() print("***********************************************8") func2 = outfunc(func2) func2(100,200,300)
老师,这组代码的中
func(*args, **kwargs)
是表示调用它的方法,然后到这里的时候是执行没有调用之前未更改的方法是吗??
问一下,老师这个
print(F"a:{a}")
和
print("a:{a}")
有什么区别。
想问一下我一直以来没有搞懂的问题:二进制,十进制,十六进制,等这些进制是什么呀。老师
import time def writeLog(func): # 使用异常处理机制 try: file = open('08.txt', 'a', encoding='utf-8') # 写入相关数据信息(访问的函数名,访问的时间) file.write(func.__name__) file.write('\t') # 写入访问时间 file.write(time.asctime()) file.write('\n') except Exception as e: print(e) #打印报错原因 finally: file.close() # 建立闭包 def funcOut(func): def funcIn(): # 添加新的功能 writeLog(func) func return funcIn # 假设这个是源码,在不动源码的情况下添加新的功能 @funcOut # 添加装饰器 def func01(): print('我是功能01') @funcOut # 添加装饰器 def func02(): print('我是功能02') # 让闭包与源码进行关联(装饰器与其同理) # func01 = funcOut(func01) # func02 = funcOut(func02) # 使用func01与func02 func01() func02()
老师你好,我的问题是使用装饰器的时候,后台不会显示'我是功能01'与'我是功能02'
但是却可以对相对应的文档进行操作
请问这是怎么回事?
import time list = [] import sys time.clock() a = [x for x in range(1000) if x % 2 == 0] Time=time.clock() print(a) print(sys.getsizeof(a)) print(Time)
l#老师好,这是那部出了毛病
老师,我能不能把 def __call__(self,*args,**kwargs): 在使用的时候这句理解为,它可以在使用方法后就直接调用这个call里面的内容,就和闭包中的内部方法一样,将需要增加的功能都放进去
老师我能不能把偏函数理解成直接给 某个方法加上一个固定的默认值,然后生成一个新的方法
def outfunc(func): def infunc(): func1() logindata(func) return infunc
老师我想问下,这个闭包的外部函数不是传进了参数func,为啥不用把这个参数传给内部函数,可他却能直接给内部函数里的方法使用
我调不出来
# list1=list(range(10)) # print(list1) for i in range(1,11): print(i,end=" ") print() for i in range(1,11,2): print(i,end=" ") print() for i in range(10,-1,-2): print(i,end=" ") print() from collections import Iterable print(isinstance(range(10),Iterable)) for i in range(10): print(i)
非常抱歉给您带来不好的体验!为了更深入的了解您的学习情况以及遇到的问题,您可以直接拨打投诉热线:
我们将在第一时间处理好您的问题!
关于
课程分类
百战程序员微信公众号
百战程序员微信小程序
©2014-2025百战汇智(北京)科技有限公司 All Rights Reserved 北京亦庄经济开发区科创十四街 赛蒂国际工业园网站维护:百战汇智(北京)科技有限公司 京公网安备 11011402011233号 京ICP备18060230号-3 营业执照 经营许可证:京B2-20212637