파이썬 엄청난 궁금증입니다.

조회수 595회

파이썬은 a = 1b = 1이 모두 1을 가르키는 같은 주소인데 그렇다면 함수의 a = 1과 함수 밖의 a = 1이 다른 이유는 무엇인가요?

예를 들어 C언어에서는

함수 선언을 하고 그 속에있던 a = 1은 return이 없다면 사라지잖아요?
그런데 파이썬은 a = 1 b = 1모두 1이란 주소를 가르키는 포인터인데, 왜 함수속 a = 1과 함수 밖의 a = 1은 호환이 안 되는걸까요? 무슨 작동원리로 a = 1 과 함수 밖의 a = 1이 다른건가요?

  • 더 추가하자면 파이썬 함수 안에서 사용되는 변수와 함수 밖에서 사용되는 변수는 왜 다른것인가? 입니다. 알 수 없는 사용자 2019.4.22 20:47
  • 반대로 생각해보시죠? 함수밖의 a와 함수안의 a가 동일한 변수라면 어떤 문제가 생길까요? 알 수 없는 사용자 2019.4.23 08:31
  • 엄청추 엽토군 2019.4.23 10:22
  • 구체적인 코드를 가지고 질문을 해 줬으면 좋겠습니다. nowp 2019.4.23 14:47

3 답변

  • 변수 scope 문제일 수도 있고 만약 함수의 파라미터 전달에 의한 문제라면 파이썬에서 스칼라(기본) 타입은 값을 복사를 합니다.

    https://hashcode.co.kr/questions/7926/%ED%8C%8C%EC%9D%B4%EC%8D%AC-%EB%B3%80%EC%88%98%EC%9D%98-%EB%B2%94%EC%9C%84-%EA%B4%80%EB%A0%A8-%EC%A7%88%EB%AC%B8

    상기의 링크를 참조해보세요.

  • 함수 안의 a = 1과 함수 밖의 a =1이 가르키는 1의 값은 똑같지만 함수 안의 a는 로컬 변수 a로 저장되는거고 함수 밖의 a는 글로벌변수이므로 둘다 1을 가르키는 값은 같지만 결국 다르게분류된다.

    프밍을 먼저 시작한 친구의 설명을 이해한 제 질문에 대한 답변입니다. 역시 친구가 최곱니다.

    • (•́ ✖ •̀)
      알 수 없는 사용자
    • (•́ ✖ •̀)
      알 수 없는 사용자
    • 근데 이건 C언어 프로그래머의 기준으로 작성된거라 파이썬은 또 어떻게될지 모르겠네욤.. 알 수 없는 사용자 2019.4.22 21:21
    • 소스가 있어야명확히 설명드릴 수 있습니다. 친구 말(scope)도 맞으나 파이썬은 call by reference, value 로 보내는 경우가 각각 다릅니다. 정영훈 2019.4.22 22:43
  • 프로그래밍 패러다임에 있어서 함수의 조건은 다음과 같습니다.

    함수는 본 루틴(Main function)에 어떠한 영향도 끼치지 않아야 하고, 함수는 오로지 return 값으로만 결과를 출력받는다.

    따라서 Function이 실행되는 영역은 본래의 프로그램 영역과는 구분됩니다. Function이 실행되고, 해당 영역의 모든 정보는 이제 더 이상 불필요하므로 기억할 필요가 없습니다.

    Python 같은 경우에는 실행되는 파일이 곧 main 함수가 됩니다.

    지역변수와 전역변수를 구분하는 까닭입니다.. 이제 프로그래밍 언어마다 어떻게 구현하느냐와 어떤 패러다임을 하느냐에 따라서 다르지만, 일반적으로 지역변수와 전역변수를 구분합니다.

    이제 지역변수 전역변수 구분하지 않고 전부다 전역변수로 다루는 것을 프로시저라고 이해할 수 있습니다아아... 스택프레임 고고.

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)