最赞回答 / Awful_Leo
装饰器的本质是闭包。def outer(f): def inner(x): #1 return f(x) #2 return inner #3f = out(f)f(x)看上面这个函数,我先定义一个outer函数,这个函数的1,2,3行都做了些什么呢?首先1,2两行我定义另一个函数,但是先不执行,我先放在这,后面用的时候再执行。然后我把定义的这个inner函数返回去。接下来调用的时候,inner函数再执行。那inner函数都干什么事呢?执行f(x)函数并返回结果...
2019-03-17
for i in range(1, 4):
def f(): # 因为f函数没有传递参数,所以函数f的定义里面i就是未知量。
# i=1时,得到函数f1():i*i i值在函数外
print(i*i) # i=2时,得到函数f2():i*i
# i=3时,得到函数f3():i*i
fs.append(f)
f() # 如果定义后马上调用执行,因为有i的值,就得到当前i对应的函数值。
def f(): # 因为f函数没有传递参数,所以函数f的定义里面i就是未知量。
# i=1时,得到函数f1():i*i i值在函数外
print(i*i) # i=2时,得到函数f2():i*i
# i=3时,得到函数f3():i*i
fs.append(f)
f() # 如果定义后马上调用执行,因为有i的值,就得到当前i对应的函数值。
2019-03-16
已采纳回答 / 慕慕4527544
斐波那契数列要有一个迭代的过程,你直接写a,b=b,a+b的话怎么体现出是一个数列呢,不写循环的话只有初始的2个数而已for n in range(num): L.append(a) a,b=b,a+b
2019-03-14
已采纳回答 / 慕侠8496208
@property就是把实例方法当做属性调用的语法,你看下面是直接print s.grade,相当于调用了grade这个属性,所以用@property
2019-03-14
已采纳回答 / 薛定谔与猫
**kw,本质是个dict对象,for in 通过dict的iteritems迭代器循环中会读取出key 和 value ,key是dict的key,value则是对应值。这样获取的属性设置只能通过setattr,因为你要设置的是属性的名称,而直接self.k的方式设置的属性为k,而且不是k的内容。
2019-03-13
已采纳回答 / 慕仔2498183
题目中并没有name,gender这些类属性所以没有写super要写的话我举个例子:#Person拥有name,gender这些类属性,Student继承Person时就要在__init__里写上 : super(Student, self).__init__(name, gender)
class Person(o...
2019-03-13
import functools
def sort(data,lower):
if lower==True:
data=map(lambda x:x.lower(),data)
return sorted(data)
sorted_ignore_case = functools.partial(sort,lower=True)
print sorted_ignore_case(['bob', 'about', 'Zoo', 'Credit'])
def sort(data,lower):
if lower==True:
data=map(lambda x:x.lower(),data)
return sorted(data)
sorted_ignore_case = functools.partial(sort,lower=True)
print sorted_ignore_case(['bob', 'about', 'Zoo', 'Credit'])
2019-03-13