파이썬에 C 코드를 다시 작성하고 있지만 막힌 것 같습니다. 이 기능은 main()
함수에서 호출파이썬과 C 언어로 변수 초기화하기
double GetArrival()
/* ---------------------------------------------
* generate the next arrival time, with rate 1/2
* ---------------------------------------------
*/
{
static double arrival = START;
SelectStream(0);
arrival += Exponential(2.0);
return (arrival);
}
:
나는 C의 기능을 가지고있다. 호출 될 때마다 알 수 있듯이 지수에 랜덤 지수 2.0이 추가됩니다. 당신이 알아야 할 것은 임의 변수를 반환하는 사용자 정의 함수라는 것입니다.
작동해야하는 C 파일에서 ddd와상의 한 후, 다음 Python에서 "equivalent"변수 arrival
이 GetArrival() 함수가 호출 될 때마다 START = 0으로 초기화된다는 것을 깨달았습니다. 이것은 어떤 이유로 함수가 호출되는 것을 제외하고는 C에서 발생하지 않습니다.
def GetArrival():
arrival = START
SelectStream(0)
arrival += Exponential(2.0)
return arrival
그래서 나는이 악 초기화를 생략해야한다고 생각하고 그것을해야한다. 그럴 경우, 다음과 같은 오류가 발생합니다.
UnboundLocalError: local variable 'arrival' referenced before assignment
어느 정도 의미가 있습니다.
내 질문에 어떻게하면 0으로 초기화 할 때마다 arrival
변수를 가지지 않고도 C로 된 파이썬 코드를 작동시킬 수 있습니까?
감사합니다.
이것은 "실행 스택"의 차이가 아닌 정적 변수 (https://en.wikipedia.org/wiki/Static_variable)에 의해 발생합니다. –
감사합니다. @jonls. 그에 따라 업데이트되었습니다. – user239546