如何在不使用 'global' 的情况下更改 Python 函数中的变量
How to change variables in Python functions without using 'global'
我在 Python 中定义了一些全局参数(也应该可以从其他文件访问),我想在定义它们的 class 中更改它们。我经常读到,一种方法是在函数内部定义变量时使用 'global'。但是,我也经常读到 'global' 基本上应该避免,因为它不是好的风格。现在我的问题是我还有哪些其他机会可以更改我的变量?当只是将它们作为参数传递给函数时(这也是一个建议)它们的值保持不变。
所以这是我的代码:
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 的情况下更改全局变量?如果有任何意见,我将不胜感激。
如果我没看错的话,您应该可以使用 return
更改函数外的变量。
作为函数的最后一行,把
return numberOfBuildings, numberOfVehicles
然后调用函数的时候
numberOfBuildings, numberOfVehicles = monteCarloScenarioGeneration(numberOfBuildings, numberOfVehicles)
我在 Python 中定义了一些全局参数(也应该可以从其他文件访问),我想在定义它们的 class 中更改它们。我经常读到,一种方法是在函数内部定义变量时使用 'global'。但是,我也经常读到 'global' 基本上应该避免,因为它不是好的风格。现在我的问题是我还有哪些其他机会可以更改我的变量?当只是将它们作为参数传递给函数时(这也是一个建议)它们的值保持不变。
所以这是我的代码:
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 的情况下更改全局变量?如果有任何意见,我将不胜感激。
如果我没看错的话,您应该可以使用 return
更改函数外的变量。
作为函数的最后一行,把
return numberOfBuildings, numberOfVehicles
然后调用函数的时候
numberOfBuildings, numberOfVehicles = monteCarloScenarioGeneration(numberOfBuildings, numberOfVehicles)