gpt4 book ai didi

维护变量赋值的 Pythonic 方式

转载 作者:太空狗 更新时间:2023-10-30 00:02:13 25 4
gpt4 key购买 nike

我之前正在编写一个小文件实用程序,遇到了通过引用传递的问题。看完How do I pass a variable by reference? ,我将要传递的变量设置为参数和返回值。在下面的代码中,它是一行:

diff = compareDir(path0, path0List, path1, path1List, diff)

其中 diff 是我希望通过引用传递的变量。

虽然这可行,但感觉相当尴尬。我认为必须有更好的方法。在许多其他语言中,我可以将 compareLists() 设置为没有返回值,并利用修改引用传递参数的副作用。 Python 的传递赋值似乎不允许这样做。

我对 python 比较陌生,想知道是否有更 pythonic 的方法来解决我的问题。是否需要完全重新考虑这些功能?还是有一个我不知道的好声明?我想远离全局变量。

我欢迎任何和所有建设性的批评和意见。谢谢!

相关代码:

def comparePaths(path0, path1):
path0List = os.listdir(path0)
path1List = os.listdir(path1)

diff = False
diff = compareDir(path0, path0List, path1, path1List, diff)
print()
diff = compareDir(path1, path1List, path0, path0List, diff)
return diff

def compareDir(basePath, baseList, comparePath, compareDir, diffVar):
for entry in baseList:
#compare to the other folder
if (not (entry in compareDir)):
if (not (diffVar)):
diffVar = True
print ("Discreptancies found. The following files are different:")
print (str(entry) + " doesn\'t exist in " + str(comparePath))
else:
print (str(entry) + " doesn\'t exist in " + str(comparePath))
return diffVar

最佳答案

由于在 Python 中,bool 类型根据定义是不可变的,因此在函数内修改 bool 变量而不重新分配它(并且不将其定义为全局变量)的唯一方法是将其存储在可变类型实例中。即:

  • 将其存储在可变数据结构(列表、字典等)中,并将该数据结构传递给函数。
  • 将其作为可变对象的属性,并将该对象传递给函数。

关于维护变量赋值的 Pythonic 方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34348813/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com