python开发,当代码存在很多重复性时,就会觉得很繁琐。重复性的操作就可以用独立一个函数来优化。主要方法就是用变量名的字符串去获取值。
例如下面这个类:
class Test(object):
a = 1
b = 2
c = 3
d = 5
...
这个类的变量就非常多,操作上就会有很多重复性了。
用字符串取值 getattr(self, key)
例如我想取某些变量乘以权重求和,写个函数
# Test的内部函数
def sum(self, **kw)
total = 0
for key in kw:
total += getattr(self, key) * kw[key]
# 调用时
t = Test()
t.sum(a=10, c=2) # 同 sum = t.a*10 + t.c*2
类似方法还有
setattr(self, key, value)
hasattr(self, key)
delattr(self, key)
内嵌函数
python中,函数里面还可以定义另一个函数,可作为返回数等。
def fun_1():
str = ""
m = 10
l = []
a = {}
def fun_2():
str = "bb"
m = 20
l.append({"a":1})
a.update({"k":2})
fun_2()
print str
print m
print l
print a
>>>fun_1()
>>>
>>>10
>>>[{'a':1}]
>>>{'k':2}
可以发现内嵌函数内字符串数值变量都无法使用外部的。除非是在fun_1()外的全局变量。
若需要使用,放在字典和列表里面是OK的。
PS:瞎整理了一篇文章,哈哈