装饰器
函数里面定义函数 (函数里面可以定义类)
def foo():
def bar(): #3
print('in bar()') #4
print('in foo()') #1
bar() #2
foo()
#结果
in foo()
in bar()
为什么要在函数里面定义函数呢?有啥特别之处?
函数里面函数的有效范围是在foo()函数里面的,
其实定义在里面的函数,在外面还是有办法访问的,可以吧函数变量弄到外面去,通过返回值
def foo():
def bar():
print('in bar()')
print('in foo()')
return bar #这里的bar对应的是bar()这个函数的变量,是没有括号的
#foo()() #也可以把下面两行注释掉,直接foo()(),因为foo()返回的是bar,
inner = foo() #foo的返回值赋值给一个变量,inner对应的是一个函数对象
inner() #inner()和bar(),是同一样的函数
装饰器
定义类的静态方法时,就使用了装饰器
@staticmethod #静态方法不需要self,实例方法要self。因为他不需要访问不同的实例的属性。 #静态方法不能访问实例属性,但是可以访问静态属性
def jump():
print("3