1 【装饰器】
def func_arg(arg):
def func(functionName):
def func_in():
print("---记录日志-arg=%s--"%arg)
if arg=="heihei":
functionName()
else:
return func_in
return func
#1. 先执行func_arg("heihei")函数,这个函数return 的结果是func这个函数的引用
#2. @func
#3. 使用@func对test进行装饰
@func_arg("heihei")
def test():
print("--test--")
#带有参数的装饰器,能够起到在运行时,有不同的功能
@func_arg("haha")
def test2():
print("--test2--")
test()
test2()
------------------------------------------------------------------------------------------------------------------------------------------------------------------
def func(functionName):
def func_in(*args, **kwargs):
print("-----记录日志-----")
ret = functionName(*args, **kwargs)
return ret
return func_in
@func
def test():
print("----test----")
return "haha"
@func
def test2():
print("----test2---")
@func
def test3(a):
print("-----test3--a=%d--"%a)
ret = test()
print("test return value is %s"%ret)
a = test2()
print("test2 return value is %s"%a)
test3(11)
2 【作用域】
globels查看全局
locals 查看局部
LEGB规则
3【python是动态语言】
动态增加属性方法
object.addNewPro
class.addNewPro
object.test = types.MethodType.(test,object)
object.test()
@statucmethod
@classmethod
class.test = test
class.test()
4【__ slots__】
__slots__ = (xxx,xxx)
保证不在新添加属性
5【生成器】
(x for x in range(10)):
yeild
send/next
网友评论