2017-01-24 2 views
0

함수에서 계산되었지만 반환 값이 아닌 변수에 액세스하려고합니다. 다른 함수에서이 함수를 호출하므로 반환 값을 변경할 수 없습니다 (사람들이 일반적으로 수행하는 것으로 알 수 있습니다). 나는 변수의 앞에 글로벌 사용하여 시도했지만 내가 외부를 호출 할 때, 나는 다음과 같은 오류가 : 나가서 설명하자면 NameError :외부 함수에서 변수에 액세스 : Python

def function(): 

    global DA 

    DA = something 

    .... 

return something_different 

print DA #(outside the function) 

나는 상대적입니다 : 전역 이름 'DA'가 내 코드는 다음과 같습니다 정의되지 않습니다 파이썬을 처음 접했을 때 어쩌면 여기에 실종되었다는 것이 명백 할 것입니다. 감사!

+0

[글로벌 변수를 작성한 함수 이외의 함수에서 전역 변수 사용] (http://stackoverflow.com/questions/423379/using-global-variables-in-a-function-other-than- 그 중 하나 - 만든 - 그들) – davedwards

+0

당신은 실제로''기능'_call_ 했습니까? 함수 내의 코드는 함수가 호출 될 때만 실행됩니다. 함수를 정의하고 호출하지 않으면 전역 DA에 값을 할당하지 않습니다. 귀하의 답변에 대해 – ShadowRanger

+0

주셔서 감사합니다. 내가 function()을 호출하면 나에게 DA가 아닌 반환 값을주지 않는다는 것을 혼란스럽게 생각한다. – Sasha

답변

0

먼저 기능 외부에서 DA을 정의해야합니다. global이 아닌 경우 새 변수를 만들어 전역 범위에 삽입하십시오. global 키워드는 함수에 로컬 이름이 같은 새 변수를 만드는 대신 기존 정의 인 DA을 참조하도록 함수에 지시합니다. 이는 함수 내에서 함수에 할당 된 모든 변수 (등호와 함께)를 함수에 대해 로컬로 유지하고 원래 정의가 복원 된 같은 이름의 전역 범위 변수 정의를 로컬로 무시하는 기본값과 반대입니다 함수 범위 밖.

+0

함수 밖에서'DA'를 정의 할 필요는 없지만, 함수 내에 유일한 정의가 있다면 함수를 실제로 _ 호출해야합니다. (문제의'global'을 정의하는 코드 경로를 따라야합니다.) 그래서 할당이 발생합니다. – ShadowRanger

관련 문제