Python - 局部变量已分配但从未使用 - var=None
Python - local variable is assigned but never used - var=None
为了尝试更好地格式化我的代码以避免在为不同 类 执行相同操作的多种方法中出现冗余,我遇到了以下问题:
# problematic method
def a(self, b, c):
result = test(b)
if (result):
c = None # <- local variable c is assigned but never used
return
# main code
obj.a(obj.b, obj.c)
并且 obj 的变量 c 从未设置为 None。
我正在尝试重新格式化的当前工作代码如下:
# working method
def a(self):
result = test(self.b)
if (result):
self.c = None
return
# main code
obj.a()
请参阅 Why can a function modify some arguments as perceived by the caller, but not others? 了解为什么在 a
中重新分配 c
不会更新 obj.c
。
如果你想将一个对象属性的引用传递给一个函数,你必须传递两个东西:
- 对象
- 属性的名称(即字符串)
然后您可以从函数内部dynamically set that attribute:
def a(self, b, name_of_c):
result = test(b)
if result:
setattr(self, name_of_c, None)
obj.a(obj.b, 'c')
为了尝试更好地格式化我的代码以避免在为不同 类 执行相同操作的多种方法中出现冗余,我遇到了以下问题:
# problematic method
def a(self, b, c):
result = test(b)
if (result):
c = None # <- local variable c is assigned but never used
return
# main code
obj.a(obj.b, obj.c)
并且 obj 的变量 c 从未设置为 None。
我正在尝试重新格式化的当前工作代码如下:
# working method
def a(self):
result = test(self.b)
if (result):
self.c = None
return
# main code
obj.a()
请参阅 Why can a function modify some arguments as perceived by the caller, but not others? 了解为什么在 a
中重新分配 c
不会更新 obj.c
。
如果你想将一个对象属性的引用传递给一个函数,你必须传递两个东西:
- 对象
- 属性的名称(即字符串)
然后您可以从函数内部dynamically set that attribute:
def a(self, b, name_of_c):
result = test(b)
if result:
setattr(self, name_of_c, None)
obj.a(obj.b, 'c')