2017-01-11 2 views
0

나는이 파일은 함수가 outlet1라는 한 파일 outSimulation.py이이 함수 내에서 데이터외부 파일에서 함수 내의 변수에 액세스 하시겠습니까?

내가

main.py라는 다른 프로그램에서이 데이터 변수에 액세스 할

라는 변수가있다 나는 절대 수입으로 시도했다.

from outSimulation import outlet1 
values = outlet1.data() 

그러나 그것은 효과가 없다. 어떤 도움을 주셔서 감사합니다.

+2

왜 외부 파일에'data' 변수를 전역으로 만들고'outSimulation.data'를 사용하여 액세스합니까? – user7342539

+2

'data'는 함수'outlet1()'에 대한 지역 변수이므로,'outlet1 '에 의해 접근 할 수 없습니다.data()' – ettanany

+0

에 액세스 할 수 없다면 먼저 콘센트 객체를 인스턴스화해야합니다 (우리가 말하는 클래스라고 가정). – arlyon

답변

0

*은 함수 외부의 함수에 로컬 인 변수에 액세스 할 수 없습니다. 당신이 outlet1()으로을 호출되는 함수에서 data의 값에 액세스하려면

  • , 그 기능에 data을 통과해야한다. 당신이outlet1() 완료가 실행 한 후 data의 값에 액세스하려면
  • , 당신은 data을 반환해야 outlet1()에서 (아마도 다른 것들과 함께).
  • 또는 data을 모듈 수준 변수로 만들 수 있습니다. 당신이 outlet1()data 뭔가를 할당 가정하면, 당신은 global 키워드를 사용하여 그것을

    def outlet1(): 
        global data 
        # code 
        data = ... 
        # more code 
    

    을 모듈 수준 변수를 만들 것이다 그러나 이것은 다른 방법보다 깨끗 경향이있다. outlet1()이 클래스 내에서 정의 된 경우

는 다른 솔루션이 있습니다,하지만 문제는 내가 그로하지 않도록 그런 경우가 아니라 제안합니다. *


은 음 ... 어, 신경 쓰지 않았다. 디버깅을 위해 할 수있는 이상한 점이 있지만, 목적에 맞게 고려하지 않는 것이 좋습니다.

0

함수는 클래스가 아니며 사용자가하려는 작업을 수행 할 수 없도록 특별히 설계되었습니다. 이것이 기능적 프로그래밍의 전제이며 캡슐화의 개념입니다. 함수가 클래스 인 경우에도 변수를 함수로 호출하려고하기 때문에 코드가 작동하지 않습니다 (()data에 추가).

데이터를 함수 내에서 참조 할 수있는 전역 변수로 만들거나 원래 반환 값과 데이터 변수 (지저분한)를 포함하여 여러 항목이 포함 된 튜플을 반환하도록 할 수 있습니다. 또한이 방법이 문제 영역에 적합한 경우 함수를 객체 지향 방식으로 다시 작성할 수도 있습니다.이 경우 위의 코드가 더 적합합니다.

관련 문제