Initialization of variable in python and C
本问题已经有最佳答案,请猛点这里访问。
我正在将C代码重写为python,但它似乎卡住了。
我在C中有函数:
1 2 3 4 5 6 7 8 9 10 11 12 | double GetArrival() /* --------------------------------------------- * generate the next arrival time, with rate 1/2 * --------------------------------------------- */ { static double arrival = START; SelectStream(0); arrival += Exponential(2.0); return (arrival); } |
此函数是从
在咨询了DDD关于C文件的工作原理之后,我意识到在下面的python"equivalent"中,每次调用函数getarrival()时,变量
1 2 3 4 5 | def GetArrival(): arrival = START SelectStream(0) arrival += Exponential(2.0) return arrival |
所以我认为我应该省略这个邪恶的初始化,这应该做到。没有,因为在这种情况下,我得到以下错误:
1 | UnboundLocalError: local variable 'arrival' referenced before assignment |
这有点道理。
所以我的问题是,如何使python代码像C中的代码一样工作,而不需要每次都将变量
谢谢。
这与Python对待静态变量与C的不同有关。尝试在python中生成静态变量(函数中的静态变量,而不是类)。这个堆栈溢出引用应该对您有所帮助。