首页 > 解决方案 > 如何在不使用“全局”的情况下更改 Python 函数中的变量

问题描述

我在 Python 中定义了一些全局参数(也应该可以从其他文件访问),我想在定义它们的类中更改它们。我经常读到这样做的一种方法是在函数内部定义变量时使用“全局”。但是,我也经常读到应该避免使用“全局”,因为它不是很好的风格。现在我的问题是我还有什么其他机会来改变我的变量?当只是将它们作为参数传递给函数时(这也是一个建议),它们的值保持不变。

所以这是我的代码:

from random import random

numberOfBuildings = 10
numberOfVehicles = 10
useMonteCarloMethodForScenarioCreation = True

def monteCarloScenarioGeneration(numberOfBuildings, numberOfVehicles):
    numberOfBuildings_MonteCarlo  = int(  numberOfBuildings *random() *2  + 1)
    numberOfVehicles_MonteCarlo  = int(numberOfVehicles *random() *2  + 1)
    
    if useMonteCarloMethodForScenarioCreation ==True:
        numberOfBuildings = numberOfBuildings_MonteCarlo
        numberOfVehicles = numberOfVehicles_MonteCarlo

    

monteCarloScenarioGeneration(numberOfBuildings, numberOfVehicles)

    
print('numberOfBuildings: ', numberOfBuildings)
print('numberOfVehicles: ', numberOfVehicles)

调用函数 monteCarloScenarioGeneration 时,全局变量 numberOfBuildings 和 numberOfVehicles 的值不会改变。它们保持与初始化后相同的值 (10)。如何在不使用关键字 global 的情况下更改全局变量?我会很感激任何评论。

标签: pythonfunctionglobal-variables

解决方案


return如果我没看错的话,你应该可以用来改变函数之外的变量。

作为函数的最后一行,把

return numberOfBuildings, numberOfVehicles

然后在调用函数时

numberOfBuildings, numberOfVehicles = monteCarloScenarioGeneration(numberOfBuildings, numberOfVehicles)


推荐阅读