提问人:Andrej Lavrinovic 提问时间:1/23/2023 更新时间:1/25/2023 访问量:70
变量的值作为参数传递到 Python 中的方法后不会更新 [duplicate]
Value of variable is not updated after passing it as a parameter into method in Python [duplicate]
问:
场景: 我在方法中声明了一个值为 0 的变量; 然后,我将此变量作为参数传递给另一个方法,该方法从第一个方法调用。 嵌套方法递增参数值 但是,变量的值仍为 0
问题: 如何更新声明变量的值
例:
def doSomething(parameter):
number = 0
doIncrement(parameter, number)
print(f'New number is: {number}') // New number is: 0
def doIncrement(param, counter):
for item in param.items(param):
if not isCountable(item):
# do something
else:
counter += 1
print('number in the counter:', counter) // number in the counter: 1
我知道没有指向计数器的引用,所以可能应该类似于我们使用指针的 C。在 python 中是如何完成的?
答:
0赞
Andrej Lavrinovic
1/23/2023
#1
现在,当我像这样为每次调用重新分配计数器变量时,它就可以工作了:
def cleanDir(path):
print("Start cleaning...")
removedFiles = 0
removedFiles = removeFiles(path, removedFiles)
print(f'Files deleted: {removedFiles}') // prints actual number of delete files
def removeFiles(path, filesCounter):
for name in os.listdir(path):
file = path + "\\" + name
if not os.path.isfile(file):
filesCounter = removeFiles(file, filesCounter)
os.rmdir(file)
else:
print('Deleting file:', file)
os.remove(file)
filesCounter += 1
return filesCounter
评论
1赞
Stuart
1/23/2023
在这种情况下,没有理由将 作为参数传递给 。 可以简单地从 0 开始计数并返回删除的文件数。如果需要将多个计数相加,请在调用函数中执行。filesCounter
removeFiles
removeFiles
0赞
Andrej Lavrinovic
1/24/2023
是的,@Stuart确实有意义.值可以通过方法返回。并分配给 中的变量。是的,多个计数器 - 这是我想将它们作为参数传递的原因。我不知道python支持多次返回。棒。谢谢。removeFiles
cleanDir
0赞
Ramesh Sankoju
1/23/2023
#2
这是一种方法:
def isCountable(item):
return False
parameter = {1:"hi", 2: 'how ', 3: 'are you'}
def doSomething(parameter):
number = 0
number = doIncrement(parameter, number)
print(f'New number is: {number}') # New number is: 0
def doIncrement(param, counter):
for item in param.items():
if not isCountable(item):
# do something
...
else:
counter += 1
print('number in the counter:', counter) # number in the counter: 1
return counter
doSomething(parameter)
评论
doIncrement
global
关键字来修改它