2018 프로그래밍 시작하기추상화 심화global 변수와 local 변수

Q

local & global 변수의 효력과 리턴값에 대해

조회 619

좋아요 1

2016년 12월 31일

A
4개의 답변이 있어요
커뮤니티 파트너 채택
2016년 12월 31일

댓글 2

2016년 12월 31일
`xis` 함수에 `global x`를 넣어도 그래도 NONE이 출력되는 이유가 궁금합니다
2016년 12월 31일
영준씨 답글3을 참고해주시기 바랍니다! ㅎㅎ
2016년 12월 31일

댓글 17

2016년 12월 31일
`x = xis()` 에 지정될 때와 그냥 `xis()`함수만 실행됐을 때 차이가 크네요. 앞으로도 헷갈릴 것 같네용 ㅠㅠㅋㅋ
2016년 12월 31일
저도 영준씨 질문 듣고, 생각해보고 실행해보고 했습니다. `x = xls()`가 되면서 값이 덮어씌여지는 것이죠! ㅎㅎ
2019년 1월 3일
이런 부분은 변수명과 함수명의 명령 시 오류가 없게 하기 위해서 어떻게 하면 될 지를 말해주는 듯 하네요. 사람이 인지하는 같은 항목이라고 local과 global에 같은 변수명을 사용하면 긴 코드에서는 필시 꼬일 듯.
2019년 1월 18일
마지막 부분에서 "x는 이렇게 2가 아닌, xis함수의 리턴값으로 값이 바뀌게 됩니다."가 이해가 안 돼요ㅠㅠ 분명 x가 2였는데 왜 리턴값으로 바뀌는 건가요?
2019년 1월 18일
xis() 함수를 실행하면 return 값이 쓰여있지 않기 때문에 내부적으로 return None이 생략되어 있다고 처리하고 가장 마지막에 return None 이 실행됩니다. return 은 함수를 종료시키면서 return 값으로 함수를 대체하게 만듭니다.
2019년 1월 18일
그러므로 xis()의 리턴값은 None이 되고 이 값이 x에 할당되게 됩니다. 그래서 print(x)를 하면 None 이 출력됩니다^^
2019년 8월 6일
두번째 경우에서, x= 1 이 먼저 인식되고 그 다음에 x = xis(), print(x) 아닌가요? 저는 1) x = 1 지정된다.2) x = xls() 지정된다. 3)print(x) = print(xls()) 가 됨 4) 호출되어 정의부터 읽기 시작 5) 함수 내의 변수가 글로벌 변수로 변함. x = x + 1 이므로 기존의 값 1에 더하기 (여기서 또 이해가 안되네요..지정이 되었는데) 6) x = 2, 이 함수의 최종 리턴값 부재로 None => print(None)
2019년 8월 6일
다음과 같은 순서로 이해했는데 설명과는 다른 방향으로 이해하게 되었습니다..어떻게 이해해야 하나요?
2019년 8월 6일
xis()는 함수를 호출하는 것입니다. 그래서 함수를 호출하여 함수 내부가 다 실행된 뒤에 return 값이 x에 할당되는 것이죠^^
2019년 8월 7일
' 따라서 x의 값은 2가 됩니다. xls()가 이렇게 불러진 후의 명령은 x = xls()입니다. ' 이 설명이 무슨 말인지 이해가 잘 가지 않네요.. // 1. print(xls())에서 xls()라는 함수가 실행이 된다. 2. 함수 내부가 실행이 되어 x = 2 라는 것이 나온다. 3. x=2 는 실행되어도 출력되지 못함. 4. 최종적으로 print에서 필요한 내용은 리턴값, 그런데 정의된 함수에는 리턴값이 없기에 None으로 지정된다. 5. 곧 print(None)과 같기에 None 출력 // 이렇게 이해했습니다. 맞을까요? 한 번 실행된 것이 바로 출력되지 않고 마지막 리턴까지 구해야하니 많이 헷갈리네요 ㅜㅜㅜ
2019년 8월 7일
아, return문 (본문 함수에선 return None으로 생략되었지만) 의 역할 중 하나가 '함수가 호출한 부분을 리턴하는 값으로 "대체" ' 하는 것이므로, 최종적으로 xls() 실행 시에는 None이 남는다. 라고 이해하면 될까요?
2019년 8월 7일
`따라서 x의 값은 2가 됩니다`는 xls 함수가 호출되면 return 에 의해 x = xls()에서 xls()가 2로 대체된 다는 것을 뜻합니다.
`xls()가 이렇게 불러진 후의 명령은 x = xls()입니다`는 xls 함수가 호출된 결과인 2가 x 에 할당된다는 것을 의미합니다^^
2019년 8월 7일
그렇습니다. 함수는 반드시 값을 반환하게 됩니다. return 이 지정되어 있지 않더라도 None을 return 하게 되는 것이죠. 그래서 x = xls()과 같이 있을 때 xls 함수가 return 값이 없다면 None 이 return 되니 x = None 과 같이 되는 것입니다.
2019년 8월 7일
1시간 동안 붙잡다가 return 문이 뭔지에 대해 깊게 이해하게 되니 정말 재밌네요 ㅎㅎ 어려운 수학 문제 하나 푼 것 같네요. 길고 장황한 질문이였는데 감사드립니다 ㅎㅎㅎ
2019년 8월 7일
이해 되셨다니 다행입니다.ㅎㅎ 강의 재밌게 들어주세요:)
2019년 10월 7일
return 문 보시는 분들은 상기 내용 꼭 이해하시고 넘어가시길 추천 드립니다.
2020년 1월 10일
이해가 정말 잘되네요!
2019년 6월 11일

(주) 코드잇

대표강영훈

개인정보보호책임자강영훈

이메일support@codeit.kr

사업자 번호313-86-00797

통신판매업제 2019-서울중구-1034 호

주소서울특별시 중구 청계천로 100 시그니쳐타워 동관 10층 코드잇