python中遇到的几个问题,记录备忘。
1. 读取二进制数据并以十六进制形式显示,类似UE显示二进制文件的方式。
print("%08X: %s\n" % (_offset, ''.join(map(lambda s: "%02X"%(ord(s)), buf[:31]))))
此格式显示为:OFFSET + HEX的形式
2. 如何清空list, dictionary.
l = ['a', 'b', 'c']
d = {'a':1, 'b':2, 'c':3}
#incorrect
l = []
d = {}
#correct
l[:] = []
del l[:]
while len(l): l.pop()
d.clear()
不正确的方式:l = [], d = {},这时如果还有其它变量在引用该值,则不会被清空,因为你只是将“l”引用到了一个新的对象,原来的对象还在,这可能不是你想要的。
举个例子:
class Test():
_test = [] #类变量,所有实例共享
def add(self, value):
self._test.append(value)
def get(self):
print self._test
def clear(self):
#incorrect
#self._test = []
#correct
self._test[:] = []
a = Test()
b = Test()
a.add(1)
a.get()
b.get()
b.clear()
b.get()
a.get()
把正确的与不正确的运行比较一下,就清楚了。