0
我正在使用fusepy的memory.py(http://code.google.com/p/fusepy/source/browse/trunk/memory.py)进行编程分配。memory.py中的setxattr如何改变任何东西?
setxattr(87行)如何实际完成任何事情? self.files不以任何方式修改,attrs在函数退出时被销毁。
我正在使用fusepy的memory.py(http://code.google.com/p/fusepy/source/browse/trunk/memory.py)进行编程分配。memory.py中的setxattr如何改变任何东西?
setxattr(87行)如何实际完成任何事情? self.files不以任何方式修改,attrs在函数退出时被销毁。
def setxattr(self, path, name, value, options, position=0):
# Ignore options
attrs = self.files[path].setdefault('attrs', {})
attrs[name] = value
所述的副作用是由setdefault
,这产生在self.files[path]
一个新的项目(除非attrs
已经存在如在它的键)来实现,并返回一个参考的值。
接下来,通过分配其关键字name
修改该参考值value
。通过那个操作,self.files
被修改。
我在哪里可以看到setdefault的作用?我知道它可以做的是attrs指向一块self.files,但我认为我阅读python并不真正做指针。我的背景在C++中更强大,python对我来说是全新的。 – user2921279
如果你习惯了C++,可以这样想:* python – shx2
中的所有东西都是指针*请参阅:http://docs.python.org/2/library/stdtypes.html#dict.setdefault – shx2