如何在不使用“全局”的情况下更改Python函数中的变量

2024-09-22 16:25:47 发布

您现在位置: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的情况下更改全局变量?如有任何意见,我将不胜感激


Tags: 文件函数true参数定义random全局int
1条回答
网友
1楼 · 发布于 2024-09-22 16:25:47

如果我没有看错的话,您应该可以使用return来更改函数外部的变量

作为函数的最后一行,将

return numberOfBuildings, numberOfVehicles

然后在调用函数时

numberOfBuildings, numberOfVehicles = monteCarloScenarioGeneration(numberOfBuildings, numberOfVehicles)

相关问题 更多 >