-
try:
print Person.__count
except AttributeError:
print("attirbuteerror")
查看全部 -
类属性和实例属性名字冲突,会先去找实例属性对应的值,如果找不到再去找类属性内的值。
查看全部 -
path 是os的一部分,引用os 和引用os.path都可以使用path下面的方法,但是引用os.path的不可以用os下除了path外的其他分支方法
查看全部 -
@functools.wraps(f)
#将原函数f的所有属性复制到新函数wrapper
查看全部 -
当执行factorial(10)时,会先去执行注解,也就是@performance('ms')。因为带参数,所以会先执行def performance(unit),把字符串ms传到unit,然后会再把被注解的函数作为参数执行def perf_decorator(f),至此注解部分就已经执行完毕了。接下来就是执行函数def factorial(n),也就是def wrapper(*args, **kw),然后该计时的计时,在计时的过程中就会执行真正的函数f(*args, **kw),并在最后return返回值,也就是print打印出的东西,流程就是这样。
但是当执行def factorial(n)即factorial(10)时,实际上执行的函数已经不是factorial函数了,被替换成了wrapper函数,可以在factorial函数内打印下函数名:
查看全部 -
结合之前学过的闭包的内容,闭包实际上就是指两层函数,一层包着一层,外面那层传参数给里面那层用,这样做的意义是,要想用里层的函数,只能通过外层,不能直接使用,也就起到了保护的作用。装饰器在闭包的基础上,增加了实际的意义,比如用外层的函数辅助输出一些内容,像print一些日志出来,或者计算内部函数调用的时间,说到底是为内层函数服务的。
而且装饰器不是为某一个函数服务的,而是为所有函数服务的,是一个通用的东西。里层的函数该怎么运行怎么运行,装饰器只是协助实现了某些辅助的功能,这也会它为什么叫装饰器,只是达到某种装饰的功能。
查看全部 -
filter()第一个参数是写一个函数返回true和false的功能,是false才过滤掉.应该使用逻辑运算符号
查看全部 -
lambda匿名函数的格式:冒号前是参数,可以有多个,用逗号隔开,冒号右边的为表达式。其实lambda返回值是一个函数的地址,也就是函数对象。
查看全部 -
cmp(x,y) 函数用于比较2个对象,如果 x < y 返回 -1, 如果 x == y 返回 0, 如果 x > y 返回 1。
查看全部 -
由于i定义在内部函数f的外面,可能会出现闭包现象
def count():
fs = []
for i in range(1, 4):
def f(j=i): **************在取一个j变量即可
return j * j
fs.append(f)
return fs
f1, f2, f3 = count()
print f1(), f2(), f3()
查看全部 -
print (f1(),f2(),f3())
第一步:执行代码“f1, f2, f3 = count()”赋值号的右边,调用count()函数,开始执行count()函数的内部命令
第二步:创建一个局部变量fs
第三步:开始执行for循环遍历列表[1,2,3],i 赋值1,然后执行 fs.append(f) 代码,得到[f],注意这时候并不需要执行函数f(),因为没有调用
第四步:继续执行for循环遍历列表[1,2,3],i 赋值2,然后执行 fs.append(f) 代码,得到[f,f],注意这时候并不需要执行函数f(),因为没有调用
第五步:继续执行for循环遍历列表[1,2,3],i 赋值3,然后执行 fs.append(f) 代码,得到[f,f,f],注意这时候并不需要执行函数f(),因为没有调用
第六步:执行代码“f1, f2, f3 = count()”赋值号的左边,将fs(即[f,f,f])赋值给f1,f2,f3,使用到了高级序列赋值语句模式
第七步:执行 print (f1(),f2(),f3()) 代码
第八步:调用函数f(),执行return i*i,此时的i的地址值指向的是外层函数中i的地址,i的值应为for之前的for循环重新赋值为3,所以return 3*3
查看全部 -
reduce(f,lst,t) f指向要调用的函数 ,lst是接收的list, t是给f函数中第一个元素赋值
reduce()传入的函数 f 必须接收两个参数,reduce()对list的每个元素反复调用函数f,并返回最终结果值。
reduce中f函数的实现是必须传入两个参数,比如f(x,y) ,t就是给f(x,y)中的x赋值的,x=t.
查看全部 -
upper()字符串中字母由小写变为大写
lower()字符串中字母由大写变为小写
capitalize()字符串中字母首字母大写其余小写
title()字符串中字母每个单词的首字母大写其余小写
查看全部 -
记得调用数学函数时应该加入:import math
然后平方根的三种表达方法别忘记。。。
第一种调用math函数库 math.sqrt
第二种调用内置函数库 pow(x,0.5)
第三种直接利用** x**0.5
查看全部 -
内层函数引用了外层函数的变量,然后返回内层函数的情况,称为闭包。其特点是返回的函数还引用了外层函数的局部变量。
查看全部
举报