주제에 대한 기사를 찾고 있습니까 “파이썬 전역 변수“? 웹사이트에서 이 주제에 대한 전체 정보를 제공합니다 c1.castu.org 탐색에서: 새로운 상위 35 가지 팁 업데이트. 바로 아래에서 이 주제에 대한 자세한 답변을 찾을 수 있습니다. 찾고 있는 주제를 더 잘 이해하려면 끝까지 읽으십시오. 더 많은 관련 검색어: 파이썬 전역 변수 파이썬 클래스 전역변수, python 전역변수 선언, 파이썬 전역변수 리스트 선언, Python global 변수, 파이썬 전역변수 접근, 파이썬 global 함수, 파이썬 전역변수 지역변수, 전역변수 영어
Table of Contents
3.3 지역변수, 전역변수 – 왕초보를 위한 Python
>>> def d_is_10(): … d = 10 # 지역변수 … print(‘d 값은 ‘, d, ‘입니다’) … >>> d_is_10() d 값은 10 입니다 >>> d Traceback (most recent call last): File “
이와 같이 함수 안에서 만들어진 변수를 지역변수라고 하고, 함수 밖에서 만들어진 변수를 전역변수라고 합니다. 지역변수는 함수가 호출되면 만들어져서, 함수의 실행이 끝날 때 함께 없어지는 반면, 전역변수는 함수와는 관계없이 항상 꿋꿋이 지구를 지킨답니다. 그래서 영어로 전역변수를 global이라는 말로 표현하지용…
시스템 프로그래밍은 컴퓨터의 CPU 구조랑, 어셈블리 언어, 어셈블리 언어를 해석해서 컴퓨터가 알 수 있게 기계어로 바꿔주는 어셈블러의 작동원리, 운영체제도 포함된 과목입니다. 한마디로 우리가 사용하는 프로그램과 컴퓨터 장치 사이에서 일하는 것이 시스템 프로그램이라고 할 수 있지요.
지역변수는 함수가 호출되면 만들어져서, 함수의 실행이 끝날 때 함께 없어지는 반면, 전역변수는 함수와는 관계없이 항상 꿋꿋이 지구를 지킨답니다. 그래서 영어로 전역 …
- Source: wikidocs.net
- Views: 96548
- Publish date: 38 minute ago
- Downloads: 68269
- Likes: 1384
- Dislikes: 4
- Title Website: 3.3 지역변수, 전역변수 – 왕초보를 위한 Python
- Description Website: 지역변수는 함수가 호출되면 만들어져서, 함수의 실행이 끝날 때 함께 없어지는 반면, 전역변수는 함수와는 관계없이 항상 꿋꿋이 지구를 지킨답니다. 그래서 영어로 전역 …
- Source: Youtube
- Views: 10713
- Date: 10 hours ago
- Download: 58979
- Likes: 7583
- Dislikes: 2
3.3 지역변수, 전역변수
여러분 안녕하세요~.
오늘(이 장을 처음 쓴 날)은 제가 중간 시험 보는 날이랍니다. 시스템 프로그래밍이랑, 선형대수 과목이구요, 시스템 분석 설계 과제물도 내야합니다.
시스템 프로그래밍은 컴퓨터의 CPU 구조랑, 어셈블리 언어, 어셈블리 언어를 해석해서 컴퓨터가 알 수 있게 기계어로 바꿔주는 어셈블러의 작동원리, 운영체제도 포함된 과목입니다. 한마디로 우리가 사용하는 프로그램과 컴퓨터 장치 사이에서 일하는 것이 시스템 프로그램이라고 할 수 있지요.
선형대수는 수학의 행렬, 벡터 같은 것에 대해 자세히 나오는데, 컴퓨터 그래픽을 구현할 때도 이런 것을 사용하더군요. 다른 여러 분야에도 응용이 되겠죠.
시스템 분석 설계는 건물을 짓기 전에 먼저 설계를 하는 것처럼 프로그램을 짤 때 전체적인 설계를 하는 것입니다.
보통 프로그래머가 되려면 자바, C, 비주얼 베이직 같은 프로그래밍 언어만 배우면 되는 것으로 생각을 하기 쉬운데, 사실 프로그래밍 언어는 한 부분에 불과하답니다. 그래서 좋은 프로그래머가 되기 위해선 많은 교육과 경험이 필요하지요.
제 강좌를 보고 계신 여러분 중에 프로그래머가 되고 싶은 분이 있다면 학교공부(특히 영어, 수학)도 열심히 하시고, 주위의 선배들, 관련 홈페이지나 월간지를 통해서 정보를 얻는다면 도움이 되실 거예요.
오늘도 함수에 관한 이야기랍니다. 제목엔 변수라고 나와있지만요. 먼저 예제를 보실까요?
학교 다닐 때, 저희 학교 짱은 영구였습니다. 제가 전학가기 전까지는…
>>> jjang = ’09’
제가 가서 바로 짱 먹었지요. 흐흐흐…
>>> jjang = ‘pig dad’
애들한테 물어보면 누가 짱이라고 할까요? 당근…
>>> jjang ‘pig dad’
그런데 자기네 반에서 짱이라고 깝죽거리는 녀석이 있었으니, 바로 땡칠이라는 친구였답니다. 반이라는 함수를 만들어 보죠.
>>> def ban(): … jjang = ’07’ … print ‘jjang =’, jjang … >>> ban() jjang = 07
그러나… 땡칠이도 제 앞에선 깨갱~이랍니다. 울 학교 짱은 변함없이 저걸랑요…
>>> jjang ‘pig dad’
ban() 함수 안에서 jjang = ’07’이라고 하면 jjang이란 변수를 새로 만드는 거구요, 기존의 jjang에는 영향을 미치지 않습니다. 그리고, ban 함수가 끝날 땐 그 함수 내에서 만들었던 변수들은 모두 없어지는 거죠.
이와 같이 함수 안에서 만들어진 변수를 지역변수라고 하고, 함수 밖에서 만들어진 변수를 전역변수라고 합니다. 지역변수는 함수가 호출되면 만들어져서, 함수의 실행이 끝날 때 함께 없어지는 반면, 전역변수는 함수와는 관계없이 항상 꿋꿋이 지구를 지킨답니다. 그래서 영어로 전역변수를 global이라는 말로 표현하지용…
지역변수를 함수 밖에서 한번 불러볼까요?
>>> def d_is_10(): … d = 10 # 지역변수 … print(‘d 값은 ‘, d, ‘입니다’) … >>> d_is_10() d 값은 10 입니다 >>> d Traceback (most recent call last): File “
“, line 1, in ? NameError: name ‘d’ is not defined d를 불러봐도 ‘d라는 이름이 없다’는 에러 메시지만 뜨지요? d_is_10() 함수가 실행되는 동안은 d가 있었는데, 함수의 실행이 끝난 다음에 함께 사라져버렸기 때문입니다. 반대로, 전역변수는 함수 안에서도 얼마든지 사용할 수 있답니다.
>>> x = 10 # 전역변수 >>> def printx(): … print(x) … >>> printx() 10
그렇다면 지역변수 대신 전역변수만 쓰는 것이 편하겠다구요? 글쎄요… 전역변수는 프로그램이 복잡해질수록 골치거리가 된답니다. 다른 엉뚱한 함수 때문에 변수의 값이 바뀌어버리는 수가 종종 있거든요. 그래서 필요에 따라 지역변수와 전역변수를 골라 쓰는 것이 좋답니다.
그리고, 함수 안에서 전역변수를 만드는 방법도 있답니다. 어떤 변수를 전역변수(global)로 사용하겠다라고 명시해주는 것이죠.
>>> def e_is_10(): … global e # 전역변수 … e = 10 … print(‘e 값은 ‘, e, ‘입니다’) … >>> e_is_10() e 값은 10 입니다 >>> e 10
여기서는 e_is_10() 함수가 실행되면서 e라는 전역변수가 만들어지고, 이 변수는 함수의 실행이 끝난 다음에도 없어지지 않습니다.
저는 그만 시험보러 가야겠네요. 즐거운 주말 보내세요~.
파이썬 global 전역변수 사용방법과 사용예 알아보기! – 인포킹
7 thg 6, 2021 — 전역변수를 설명하기 위해서는 파이썬 함수가 필요하다. 함수 안의 변수들은 지역변수로 함수 영역 밖에서는 호출하여 사용할 수 없다.
- Source: www.infoking.site
- Views: 25460
- Publish date: 4 minute ago
- Downloads: 58665
- Likes: 7110
- Dislikes: 5
- Title Website: 파이썬 global 전역변수 사용방법과 사용예 알아보기! – 인포킹
- Description Website: 7 thg 6, 2021 — 전역변수를 설명하기 위해서는 파이썬 함수가 필요하다. 함수 안의 변수들은 지역변수로 함수 영역 밖에서는 호출하여 사용할 수 없다.
1분 파이썬 – (44) 전역변수
- Source: Youtube
- Views: 106008
- Date: 1 hours ago
- Download: 36231
- Likes: 8750
- Dislikes: 9
[python] 파이썬에서 전역 변수 사용하기 – global – 림코딩
val이라는 전역 변수를 change_val 이라는 함수내에서 변경하려고 했으나 변경되지 않고 False 값이 그대로 출력되었다. 이는 C언어의 문법을 기반으로 생각했기 때문에 함수 내에서 변수값이 변경될거라 생각했다. 하지만 파이썬 함수 내에서 전역 변수를 수정하려면 global 키워드를 통해서 전역변수임을 명시해주어야 한다. 그렇지 않으면 그저 함수내에 지역 변수로 인식될 것이다.
# 전역 변수 val = False def change_val(): # 아래 val은 함수내의 ‘지역변수’다. val = True change_val() print(val) >> False
val = False def change_val(): global val val = True change_val() print(val)
8 thg 4, 2022 — 하지만 파이썬 함수 내에서 전역 변수를 수정하려면 global 키워드를 통해서 전역변수임을 명시해주어야 한다. 그렇지 않으면 그저 함수내에 지역 변수로 …
- Source: devpouch.tistory.com
- Views: 51949
- Publish date: 8 minute ago
- Downloads: 98328
- Likes: 1819
- Dislikes: 10
- Title Website: [python] 파이썬에서 전역 변수 사용하기 – global – 림코딩
- Description Website: 8 thg 4, 2022 — 하지만 파이썬 함수 내에서 전역 변수를 수정하려면 global 키워드를 통해서 전역변수임을 명시해주어야 한다. 그렇지 않으면 그저 함수내에 지역 변수로 …
9강 – 파이썬(Python) 전역 변수와 지역 변수 [ 파이썬(Python) 입문자용 초급 ]
- Source: Youtube
- Views: 22040
- Date: 5 hours ago
- Download: 82828
- Likes: 4842
- Dislikes: 5
[python] 파이썬에서 전역 변수 사용하기 – global
파이썬에서 전역변수를 사용하다가 예상대로 코드가 실행되지 않는다는 것을 발견했다.
전역변수 사용의 잘못된 코드
# 전역 변수 val = False def change_val(): # 아래 val은 함수내의 ‘지역변수’다. val = True change_val() print(val) >> False
val이라는 전역 변수를 change_val 이라는 함수내에서 변경하려고 했으나 변경되지 않고 False 값이 그대로 출력되었다. 이는 C언어의 문법을 기반으로 생각했기 때문에 함수 내에서 변수값이 변경될거라 생각했다. 하지만 파이썬 함수 내에서 전역 변수를 수정하려면 global 키워드를 통해서 전역변수임을 명시해주어야 한다. 그렇지 않으면 그저 함수내에 지역 변수로 인식될 것이다.
전역변수를 사용할래요 – global 키워드
val = False def change_val(): global val val = True change_val() print(val)
위 코드와 기존 코드의 다른 점은 global 키워드를 통해 전역변수 val을 사용한다고 명시했다.
참고로 아래와 같이 함수 내부에서 전역 변수 선언을 할 수도 있다.
변수의 유효 범위(variable scope) – 코딩의 시작, TCP School
위의 예제처럼 전역 변수의 값을 함수 내부에서 변경하는 것은 그리 좋은 방법이 아닙니다. 이러한 행위는 해당 전역 변수를 사용하는 다른 함수의 동작을 의도치 않게 바꾸는 결과를 초래할 수 있으므로, 변수의 유효 범위를 이해하는 용도로만 사용하시길 바랍니다.
예제 def func(): global global_var local_var = “지역 변수” print(local_var) print(global_var) global_var = “전역 변수” func() print(global_var) 코딩연습 ▶
함수 내부에서 선언된 지역 변수는 함수의 호출이 끝남과 동시에 소멸되므로, 함수 밖에서 접근하려고 하면 선언되지 않은 변수에 접근하는 것으로 인식하여 오류가 발생하는 것입니다. 함수의 매개변수 또한 함수 내부에서 정의되는 지역 변수로 취급됩니다.
파이썬에서 전역 변수(global variable)란 함수 외부에서 선언된 변수를 의미합니다. 이렇게 함수 외부에서 선언된 전역 변수는 함수 외부에서는 당연히 접근할 수 …
- Source: www.tcpschool.com
- Views: 26499
- Publish date: 10 minute ago
- Downloads: 33835
- Likes: 7873
- Dislikes: 10
- Title Website: 변수의 유효 범위(variable scope) – 코딩의 시작, TCP School
- Description Website: 파이썬에서 전역 변수(global variable)란 함수 외부에서 선언된 변수를 의미합니다. 이렇게 함수 외부에서 선언된 전역 변수는 함수 외부에서는 당연히 접근할 수 …
처음코딩 파이썬 13 지역변수, 전역변수
- Source: Youtube
- Views: 34332
- Date: 29 minute ago
- Download: 41621
- Likes: 6884
- Dislikes: 3
코딩교육 티씨피스쿨
변수의 유효 범위
변수의 유효 범위(variable scope)
파이썬에서는 변수가 선언된 위치에 따라 해당 변수가 영향을 미치는 범위까지 달라지며, 이것을 변수의 유효 범위(variable scope)라고 부릅니다.
예를 들어, 함수 내부에서 선언된 변수는 해당 함수 내부에서만 사용할 수 있으며, 함수 밖에서는 사용할 수 없습니다.
파이썬에서 변수는 유효 범위에 따라 다음과 같이 나눌 수 있습니다.
1. 지역 변수(local variable)
2. 전역 변수(global variable)
지역 변수(local variable)
파이썬에서 지역 변수(local variable)란 함수 내에서 선언된 변수를 의미합니다.
이렇게 함수 내에서 선언된 지역 변수는 일반적으로 함수 내에서만 사용할 수 있습니다.
예제 def func(): local_var = “지역 변수” print(local_var) func() # print(local_var) 코딩연습 ▶
실행 결과 지역 변수
위의 예제에서는 func() 함수 내부에서 local_var이라는 이름의 지역 변수를 선언하고 사용하고 있습니다.
하지만 7번 라인의 주석 처리를 해제하고 함수 밖에서 함수 내에 선언된 지역 변수에 접근하려고 하면 NameError가 발생하는 것을 확인할 수 있습니다.
함수 내부에서 선언된 지역 변수는 함수의 호출이 끝남과 동시에 소멸되므로, 함수 밖에서 접근하려고 하면 선언되지 않은 변수에 접근하는 것으로 인식하여 오류가 발생하는 것입니다. 함수의 매개변수 또한 함수 내부에서 정의되는 지역 변수로 취급됩니다.
전역 변수(global variable)
파이썬에서 전역 변수(global variable)란 함수 외부에서 선언된 변수를 의미합니다.
이렇게 함수 외부에서 선언된 전역 변수는 함수 외부에서는 당연히 접근할 수 있으며, 모든 함수에서 global 키워드로 재선언하면 접근할 수 있게 됩니다.
예제 def func(): global global_var local_var = “지역 변수” print(local_var) print(global_var) global_var = “전역 변수” func() print(global_var) 코딩연습 ▶
실행 결과 지역 변수
전역 변수
전역 변수
위 예제의 5번 라인처럼 함수 내부에서 전역 변수를 사용하기 위해서는 반드시 2번 라인처럼 global 키워드를 사용하여 해당 전역 변수를 재선언해야 합니다.
만약 함수 외부에서 선언된 전역 변수와 함수 내부에서 선언된 지역 변수의 이름이 같은 경우에는 다음 예제와 같이 global 키워드를 사용하지 않으면 전혀 별개의 변수로 취급되므로 주의해야 합니다.
예제 def func(): var = “지역 변수” print(var) var = “전역 변수” print(var) func() print(var) 코딩연습 ▶
실행 결과 전역 변수
지역 변수
전역 변수
위 예제의 2번 라인은 전역 변수 var에 대입 연산을 하는 것이 아니라 새로운 지역 변수인 var를 선언하는 것으로 인식됩니다. 따라서 9번 라인에서 전역 변수 var의 값이 변하지 않았음을 확인할 수 있습니다.
다음 예제의 3번 라인처럼 global 키워드를 사용해야만 지역 변수의 선언이 아닌 전역 변수의 값을 변경하는 구문으로 제대로 동작할 수 있습니다.
예제 def func(): global var var = “지역 변수” print(var) var = “전역 변수” print(var) func() print(var) 코딩연습 ▶
실행 결과 전역 변수
지역 변수
지역 변수
10번 라인에서 전역 변수 var의 출력 결과가 “전역 변수”에서 “지역 변수”로 변경된 것을 확인할 수 있습니다.
위의 예제처럼 전역 변수의 값을 함수 내부에서 변경하는 것은 그리 좋은 방법이 아닙니다. 이러한 행위는 해당 전역 변수를 사용하는 다른 함수의 동작을 의도치 않게 바꾸는 결과를 초래할 수 있으므로, 변수의 유효 범위를 이해하는 용도로만 사용하시길 바랍니다.
지역 변수 vs 전역 변수
그렇다면 변수를 선언할 때 지역 변수와 전역 변수 중 어떤 변수로 선언해야 좋을지 고민될 수 있습니다.
둘 중 어떤 변수를 사용하는 것이 더 좋다고 딱 잘라 말할 수는 없으며, 해당 변수가 사용되는 목적에 따라 구분해서 사용할 필요가 있습니다.
즉, 프로그램이 실행되는 내내 변하지 않아야 하거나 여러 함수에서 함께 사용하는 값들은 전역 변수로 선언하는 것이 좋으며, 특정 함수에서만 사용되는 값들은 지역 변수로 선언하는 것이 좋습니다.
연습문제
파이썬 코딩 도장: 33.1 변수의 사용 범위 알아보기
분명 함수 foo 안에서 x = 20처럼 x의 값을 20으로 변경했습니다. 하지만 함수 바깥에서 print로 x의 값을 출력해보면 10이 나옵니다. 겉으로 보기에는 foo 안의 x는 전역 변수인 것 같지만 실제로는 foo의 지역 변수입니다. 즉, 전역 변수 x가 있고, foo에서 지역 변수 x를 새로 만들게 됩니다. 이 둘은 이름만 같을 뿐 서로 다른 변수입니다.
실행을 해보면 x가 정의되지 않았다는 에러가 발생합니다. 왜냐하면 변수 x는 함수 foo 안에서 만들었기 때문에 foo의 지역 변수(local variable)입니다. 따라서 지역 변수는 변수를 만든 함수 안에서만 접근할 수 있고, 함수 바깥에서는 접근할 수 없습니다. 특히 지역 변수를 접근할 수 있는 범위를 지역 범위(local scope)라고 합니다.
foo 함수에서 함수 바깥에 있는 변수 x의 값을 출력했습니다. 물론 함수 바깥에서도 x의 값을 출력할 수 있습니다. 이처럼 함수를 포함하여 스크립트 전체에서 접근할 수 있는 변수를 전역 변수(global variable)라고 부릅니다. 특히 전역 변수에 접근할 수 있는 범위를 전역 범위(global scope)라고 합니다.
이처럼 함수를 포함하여 스크립트 전체에서 접근할 수 있는 변수를 전역 변수(global variable)라고 부릅니다. 특히 전역 변수에 접근할 수 있는 범위를 전역 범위(global …
- Source: dojang.io
- Views: 67126
- Publish date: 60 minute ago
- Downloads: 101500
- Likes: 9465
- Dislikes: 1
- Title Website: 파이썬 코딩 도장: 33.1 변수의 사용 범위 알아보기
- Description Website: 이처럼 함수를 포함하여 스크립트 전체에서 접근할 수 있는 변수를 전역 변수(global variable)라고 부릅니다. 특히 전역 변수에 접근할 수 있는 범위를 전역 범위(global …
- Source: Youtube
- Views: 91395
- Date: 54 minute ago
- Download: 89728
- Likes: 2387
- Dislikes: 4
파이썬 코딩 도장: 33.1 변수의 사용 범위 알아보기
Unit 33. 클로저 사용하기
이번에는 변수의 사용 범위와 함수를 클로저 형태로 만드는 방법을 알아보겠습니다.
참고로 클로저는 개념이 다소 어려울 수 있으므로 변수의 사용 범위부터 알아본 뒤에 설명하겠습니다.
33.1 변수의 사용 범위 알아보기
파이썬 스크립트에서 변수를 만들면 다음과 같이 함수 안에서도 사용할 수 있습니다.
global_variable.py
x = 10 # 전역 변수 def foo (): print ( x ) # 전역 변수 출력 foo () print ( x ) # 전역 변수 출력
실행 결과
10 10
foo 함수에서 함수 바깥에 있는 변수 x의 값을 출력했습니다. 물론 함수 바깥에서도 x의 값을 출력할 수 있습니다. 이처럼 함수를 포함하여 스크립트 전체에서 접근할 수 있는 변수를 전역 변수(global variable)라고 부릅니다. 특히 전역 변수에 접근할 수 있는 범위를 전역 범위(global scope)라고 합니다.
▼ 그림 33-1 전역 변수와 전역 범위
그럼 변수 x를 함수 foo 안에서 만들면 어떻게 될까요?
local_variable.py
def foo (): x = 10 # foo의 지역 변수 print ( x ) # foo의 지역 변수 출력 foo () print ( x ) # 에러. foo의 지역 변수는 출력할 수 없음
실행 결과
10 Traceback (most recent call last): File “C:\project\local_variable.py”, line 6, in
print(x) # 에러. foo의 지역 변수는 출력할 수 없음 NameError: name ‘x’ is not defined 실행을 해보면 x가 정의되지 않았다는 에러가 발생합니다. 왜냐하면 변수 x는 함수 foo 안에서 만들었기 때문에 foo의 지역 변수(local variable)입니다. 따라서 지역 변수는 변수를 만든 함수 안에서만 접근할 수 있고, 함수 바깥에서는 접근할 수 없습니다. 특히 지역 변수를 접근할 수 있는 범위를 지역 범위(local scope)라고 합니다.
▼ 그림 33-2 지역 변수와 지역 범위
이렇게 전역 변수와 지역 변수를 사용해보았습니다.
33.1.1 함수 안에서 전역 변수 변경하기
만약 함수 안에서 전역 변수의 값을 변경하면 어떻게 될까요?
global_local_variable.py
x = 10 # 전역 변수 def foo (): x = 20 # x는 foo의 지역 변수 print ( x ) # foo의 지역 변수 출력 foo () print ( x ) # 전역 변수 출력
실행 결과
20 10
분명 함수 foo 안에서 x = 20처럼 x의 값을 20으로 변경했습니다. 하지만 함수 바깥에서 print로 x의 값을 출력해보면 10이 나옵니다. 겉으로 보기에는 foo 안의 x는 전역 변수인 것 같지만 실제로는 foo의 지역 변수입니다. 즉, 전역 변수 x가 있고, foo에서 지역 변수 x를 새로 만들게 됩니다. 이 둘은 이름만 같을 뿐 서로 다른 변수입니다.
함수 안에서 전역 변수의 값을 변경하려면 global 키워드를 사용해야 합니다. 다음과 같이 함수 안에서 global에 전역 변수의 이름을 지정해줍니다.
global 전역변수
function_global_keyword.py
x = 10 # 전역 변수 def foo (): global x # 전역 변수 x를 사용하겠다고 설정 x = 20 # x는 전역 변수 print ( x ) # 전역 변수 출력 foo () print ( x ) # 전역 변수 출력
실행 결과
20 20
이제 함수 안에서 x를 20으로 변경하면 함수 바깥에서 x를 출력했을 때 20이 나옵니다. 이렇게 함수 안에서 변수를 global로 지정하면 전역 변수를 사용하게 됩니다.
만약 전역 변수가 없을 때 함수 안에서 global을 사용하면 해당 변수는 전역 변수가 됩니다.
# 전역 변수 x가 없는 상태 def foo (): global x # x를 전역 변수로 만듦 x = 20 # x는 전역 변수 print ( x ) # 전역 변수 출력 foo () print ( x ) # 전역 변수 출력
[Python] 전역 변수 지역 변수 사용법 총 정리/ global, nonlocal
위의 a 는 전역 변수이다. 실행하는 파이썬 전체 영역에서 사용할 수 있기 때문에 이름도 ‘전역’으로 전체 영역으로 생각하면 쉬울 것 같다. a = 1 이라고 전역변수 a를 첫 줄에 선언하고 그리고 함수 Fn 에서 해당 전역 변수 a의 값을 print 하라고 설정했다. 전역변수이므로 6, 7번 줄에서 모두 출력이 된다!
그리고 함수 Fn 안에서 a = 2 라고 값을 바꾸었다. –> 요 의미는 1번째 줄의 전역 변수 a의 값을 바꿨다라기보다 함수 Fn 안에 a라는 변수를 새로 선언한 것에 가깝다. 함수 안에서 선언한 a는 함수를 벗어난 어떠한 코드에도 영향을 주지 않기 때문에 첫 번째 줄의 a와 무관하다고 볼 수 있다.
코드 풀이 : gloabl a —-> a 라는 전역 변수를 가져오겠다. 사용하겠다 ! 라는 의미로 볼 수 있다. 그리고 5번째 줄에 a = 2 / a 변수에 2라는 값을 넣을 때, 이 때의 a는 전역 변수를 가리키게 된다. 즉, 전역 변수 a의 값을 변경시킨다.
13 thg 6, 2021 — Python, Global variable = 파이썬 전역 변수란 ? … – Global scope, 전역 범위에서 활동하는 변수. 전역 범위란 함수를 포함하여 스크립트 전체에서 모든 …
- Source: codingpractices.tistory.com
- Views: 105931
- Publish date: 11 hours ago
- Downloads: 13689
- Likes: 9356
- Dislikes: 4
- Title Website: [Python] 전역 변수 지역 변수 사용법 총 정리/ global, nonlocal
- Description Website: 13 thg 6, 2021 — Python, Global variable = 파이썬 전역 변수란 ? … – Global scope, 전역 범위에서 활동하는 변수. 전역 범위란 함수를 포함하여 스크립트 전체에서 모든 …
1분 파이썬 – (43) 지역변수
- Source: Youtube
- Views: 79140
- Date: 20 minute ago
- Download: 59425
- Likes: 6692
- Dislikes: 8
[Python] 전역 변수 지역 변수 사용법 총 정리/ global, nonlocal
Python, Global variable = 파이썬 전역 변수란 ?
– Global scope, 전역 범위에서 활동하는 변수. 전역 범위란 함수를 포함하여 스크립트 전체에서 모든 요소에 해당 변수에 접근할 수 있도록 하는 것이 전역 변수이다.
위의 a 는 전역 변수이다. 실행하는 파이썬 전체 영역에서 사용할 수 있기 때문에 이름도 ‘전역’으로 전체 영역으로 생각하면 쉬울 것 같다. a = 1 이라고 전역변수 a를 첫 줄에 선언하고 그리고 함수 Fn 에서 해당 전역 변수 a의 값을 print 하라고 설정했다. 전역변수이므로 6, 7번 줄에서 모두 출력이 된다!
전역 변수의 범위
Python, Local variable = 파이썬 지역 변수란 ?
– 지역 변수란 Local scope, 지역 범위에서만 영향을 주고 받을 수 있는 변수를 지칭한다. 예를 들어 함수 안에서 a = 1이라고 변수 선언을 하게 되면 이제 a는 해당 함수 안에서만 사용될 수 있다. 아래 예시 ↓↓ 를 보면 더 이해가 잘 간다.
Fn 이라는 함수 안에 a 라는 변수에 1을 선언하고 함수 안에서 print(a)를 했다. -> Fn() 함수 실행 -> a=1이 선언되었으므로 print(a)가 출력이 된다 !
그리고 6번째 줄의 print(a)는 실행 전에 이미 스크립스 상에서 빨간색으로 밑줄이 그어져 있다. print할 a를 찾을 수 없어서 console은 오류가 난다. a는 함수 Fn안에서만 선언이 되었기 떄문에 Fn()안에서만 영향을 끼친다.
지역 변수의 범위
전역 변수와 지역 변수를 구분해서 사용해야 하는 이유
코딩 테스트 공부를 하다 보니 전역 변수와 지역 변수를 구분해서 값을 도출해내야 할 때가 자주 있었다. 아래의 변수 값 변경을 해보며 좀 더 전역 변수와 지역 변수를 이해할 수 있었다.
전역 변수 값 변경 ?
코드 풀이 : 첫번째 줄에 전역 변수로 a = 1 선언을 해주었다. (함수 등에 들어가 있지 않음)
그리고 함수 Fn 안에서 a = 2 라고 값을 바꾸었다. –> 요 의미는 1번째 줄의 전역 변수 a의 값을 바꿨다라기보다 함수 Fn 안에 a라는 변수를 새로 선언한 것에 가깝다. 함수 안에서 선언한 a는 함수를 벗어난 어떠한 코드에도 영향을 주지 않기 때문에 첫 번째 줄의 a와 무관하다고 볼 수 있다.
7번째 줄 : Fn() 함수 실행으로 첫 번째 줄을 무시하고 바로 def Fn(): ~ 의 내용을 실행하면 —> a = 2 # 2가 출력이 된다.
8번째 줄 : print(a) –> 이 명령은 a를 출력하는 것인데 a는 첫 번째 줄의 a = 1 (전역 변수)를 가리키게 된다. (함수 Fn()과 무관)
전역 변수를 특정 함수에 가져올 순 없을까 ?
함수 안에서 전역 변수의 값을 변경하려면 global 키워드를 사용해 선언을 해주면 된다.
아래 예시 ↓↓
global 키워드 사용 예
코드 풀이 : gloabl a —-> a 라는 전역 변수를 가져오겠다. 사용하겠다 ! 라는 의미로 볼 수 있다. 그리고 5번째 줄에 a = 2 / a 변수에 2라는 값을 넣을 때, 이 때의 a는 전역 변수를 가리키게 된다. 즉, 전역 변수 a의 값을 변경시킨다.
6번째 줄 print(a) —> 2
9번째 줄 print(a) —-> 2 둘 다 모두 전역 변수를 가리키기 때문에 변경된 전역 변수의 값 2를 출력한다.
주의점
-아래와 같이 global a = 2 이렇게 바로 쓸 수 없고 반드시 ” global a ” 선언을 하고 그 다음에 변수의 값을 넣어줄 수 있다.
전역 변수가 없는데 global로 전역 변수를 만드는 경우
함수 안에 global + 변수 선언을 하면 해당 변수는 전역 변수가 된다.
코드 풀이 : 함수 Fn() 에서 global 키워드를 사용하여 a를 전역 변수로 선언했다. 그리고 a 에 10이라는 값을 담고 print(a) ==10
8번째 줄에서 print(a) 는 a == 전역 변수를 가리키는데 함수 밖에 전역 변수는 없지만 함수 안에서 global을 사용해서 a를 선언했기 때문에 전역변수가 되어 10이 출력 된다.
함수 안에서 global을 사용하지않고 한 경우 (-> 지역 변수)
전역 변수 a는 존재하지 않기 때문에 오류가 난다.
nonlocal 지역 변수 (지역 변수를 불러올 때)
전역 변수를 불러오는 키워드가 global 이었다면 지역 변수를 불러오기위해서는 nonlocal을 사용한다.
코드 풀이 : Fn 함수 안에 Fn2 또 다른 함수 실행
Fn2에서 Fn 함수 안의 지역 변수 a를 가져올 때 nonlocal 키워드를 사용, a 변수를 선언해준다.
만약 nonlocal 키워드를 사용하지않으면 아래 코드처럼 Fn2 함수 안에서만의 a 변수가 되어 Fn() 첫 번째 함수에는 영향을 미치지 않게 된다.
파이썬의 global과 nonlocal 키워드 사용법
UnboundLocalError Traceback ( most recent call last ) < ipython-input-14-ee29d3b8aa1 0 > in < module > 9 10 count_up = counter ( ) — > 11 print ( count_up ( )) 12 print ( count_up ( 2 )) 13 print ( count_up ( 3 )) < ipython-input-14-ee29d3b8aa1 0 > in _increment ( inc ) 3 4 def _increment ( inc = 1 ) : —- > 5 cnt += inc 6 return cnt 7 UnboundLocalError: local variable ‘cnt’ referenced before assignment
같은 범위 내에서는 자유롭게 변수에 접근이 가능하지만 다른 범위에서 선언된 변수에 접근할 때는 정해진 제약을 따르게 됩니다. 기본적으로 바깥 쪽 범위 내에서 선언된 변수를 안 쪽 범위에서는 접근할 수 있지만, 반대로 안 쪽 범위 내에서 선언된 변수를 바깥 쪽 범위에서 접근하는 것은 불가능합니다. 예를 들어, outer() 함수 밖에서 선언한 전역 변수는 outer() 함수 내부와 inner() 함수 내부에서 접근이 가능합니다. 하지만 outer() 함수 안에서 안에서는 선언한 outer() 함수 외부에서는 접근할 수 없으며, outer() 함수와 inner() 함수 안에서는 접근 가능이 가능합니다.
global_var = “전역 변수” def outer ( ) : nonlocal_var = “비전역 변수” print ( global_var ) print ( nonlocal_var ) def inner ( ) : local_var = “지역 변수” print ( global_var ) print ( nonlocal_var ) print ( local_var ) print ( local_var ) print ( nonlocal_var ) print ( local_var )
global 과 nonlocal 키워드에 대해서 이해하려면 먼저 변수의 범위(scope)에 대한 개념을 간단히 짚고 넘어가야할 것 같습니다. 비단 파이썬 뿐만 아니라 대부분의 …
- Source: www.daleseo.com
- Views: 94212
- Publish date: 16 minute ago
- Downloads: 87840
- Likes: 4709
- Dislikes: 6
- Title Website: 파이썬의 global과 nonlocal 키워드 사용법
- Description Website: global 과 nonlocal 키워드에 대해서 이해하려면 먼저 변수의 범위(scope)에 대한 개념을 간단히 짚고 넘어가야할 것 같습니다. 비단 파이썬 뿐만 아니라 대부분의 …
08 파이썬 지역변수와 전역변수
- Source: Youtube
- Views: 60447
- Date: 19 minute ago
- Download: 65523
- Likes: 3427
- Dislikes: 4
파이썬의 global과 nonlocal 키워드 사용법
파이썬에는 global 과 nonlocal 이라는 아주 많이 쓰이지는 않지만 종종 만나게 되는 재미있는 키워드가 있습니다. 이 두 키워드를 한글로 해석하면 각각 ‘전역’, ‘비지역’으로 비슷한 의미인 것 같아서 많은 분들이 햇갈려하시는데요.
이번 포스팅에서는 이 두 개의 키워드가 왜 필요하고 어떤 경우에 사용해야되는지에 대해서 알아보도록 하겠습니다.
변수의 범위(scope)
global 과 nonlocal 키워드에 대해서 이해하려면 먼저 변수의 범위(scope)에 대한 개념을 간단히 짚고 넘어가야할 것 같습니다.
비단 파이썬 뿐만 아니라 대부분의 프로그래밍 언어에서 변수의 범위라는 것은 해당 변수를 어디에서 선언하느냐에 따라서 결정이 됩니다. 아주 단순하게 두 구역으로 나누면 함수 외부를 전역(global/module) 범위라고 하고, 함수 내부를 지역(local/function) 범위라고 합니다. 또한 함수를 중첩했을 때 외부 함수와 내부 함수의 사이에서 생겨나는 비지역(nonlocal/enclosing) 범위라는 것도 있습니다.
이 세 구역의 범위를 각 함수의 입장에서 간단하게 주석으로 나타내보면 다음과 같습니다.
def outer ( ) : def inner ( ) :
(파이썬에서는 추가적으로 내장(built-in) 범위라는 것도 있지만 global 과 nonlocal 키워드를 이해햐는데 크게 도움이 되지 않으므로 다루지 않겠습니다.)
같은 범위 내에서는 자유롭게 변수에 접근이 가능하지만 다른 범위에서 선언된 변수에 접근할 때는 정해진 제약을 따르게 됩니다. 기본적으로 바깥 쪽 범위 내에서 선언된 변수를 안 쪽 범위에서는 접근할 수 있지만, 반대로 안 쪽 범위 내에서 선언된 변수를 바깥 쪽 범위에서 접근하는 것은 불가능합니다. 예를 들어, outer() 함수 밖에서 선언한 전역 변수는 outer() 함수 내부와 inner() 함수 내부에서 접근이 가능합니다. 하지만 outer() 함수 안에서 안에서는 선언한 outer() 함수 외부에서는 접근할 수 없으며, outer() 함수와 inner() 함수 안에서는 접근 가능이 가능합니다.
global_var = “전역 변수” def outer ( ) : nonlocal_var = “비전역 변수” print ( global_var ) print ( nonlocal_var ) def inner ( ) : local_var = “지역 변수” print ( global_var ) print ( nonlocal_var ) print ( local_var ) print ( local_var ) print ( nonlocal_var ) print ( local_var )
변수의 범위의 다른 중요한 특성은 서로 다른 범위에서는 변수 이름 충돌이 발생하지 않으며 안 쪽 범위에서 바깥 쪽 범위에서 선언된 변수와 똑같은 이름의 변수를 생성할 수 있다는 것입니다. 예를 들어, 아래에 선언된 3개의 var 변수는 이름만 같을 뿐 서로 다른 값을 저장할 수 있는 엄연히 다른 변수입니다.
var = “지역 변수” def outer ( ) : var = “비지역 변수” def inner ( ) : var = “지역 변수”
이러한 현상을 소위 variable shadowing이라고 부르기도 하는데요. 코드 가독성을 해치기 때문에 일반적으로 피해야하는 코딩 관행으로 여겨지고 있지만 지금부터 설명드릴 global 과 nonlocal 키워드가 왜 필요한지 이해하는데 중요한 개념입니다.
global 키워드
아래 코드를 실행하면 무엇이 출력이 될까요?
num = 0 def change_num ( ) : print ( num ) change_num ( ) print ( num )
0 이 두 번 연속으로 출력이 될 것입니다. num 는 전역 변수이기 함수 안에서 접근하든 밖에서 접근하든 동일한 값을 담고 있습니다.
그러면 아래와 같이 num 를 함수 안에서 갱신하면 무엇이 출력이 될까요?
num = 0 def change_num ( ) : num = 100 print ( num ) change_num ( ) print ( num )
많은 분들이 100 이 두 번 연속으로 출력될 것이라고 생각하시지만, 실제로 실행을 해보면 100 과 0 이 출력이 됩니다. 위에서 설명드린 소위 variable shadowing 현상 때문에 함수 내부에 있는 num 이라는 지역 변수는 함수 외부에 있는 num 이라는 전역 변수와 엄연히 다른 변수입니다.
그러면 이와 같이 동일한 이름의 지역 변수를 생성하지 않고, 전역 변수의 값을 함수 내부에서 변경하고 싶다면 어떻게 해야할까요❓ 네, 이럴 때 사용하는 것이 global 키워드입니다❗
함수 안에서 변수 앞에 global 키워드를 붙여주면 해당 변수는 새로운 지역 변수가 되지 않고 함수 밖에서 이미 선언된 전역 변수를 가리키게 됩니다.
num = 0 def chnage_num ( ) : global num num = 100 print ( num ) chnage_num ( ) print ( num )
위 코드를 실행하면 처음에 예상했던 데로 100 이 두 번 연속으로 출력되는 것을 불 수 있습니다.
nonlocal 키워드
nonlocal 키워드도 global 키워드와 같이 동일한 이름의 새로운 변수가 생성되는 것을 방지하기 위해서 사용됩니다. 이 두 키워드의 차이점은 global 키워드는 일반 함수 내에서 전역(global/module) 변수를 대상으로 사용하는 반면에 nonlocal 키워드는 중첩 함수 내에서 비지역(nonlocal/closing) 변수를 대상으로 사용한다는 것입니다.
글로만 설명하면 이해가 어려울 수 있으니 예제 코드를 한번 같이 볼까요?
아래 두 개의 함수는 중첩이 되어 있습니다. 여기서 num 변수는 print_nums() 함수의 안 쪽, change_num() 함수의 바깥 쪽에서 선언이 되어 있는데요. 따라서 이 변수는 print_nums() 함수 입장에서 보면 지역 변수이고, change_num() 함수 입장에서 보면 비지역 변수입니다.
def print_nums ( ) : num = 0 def change_num ( ) : print ( num ) change_num ( ) print ( num ) print_nums ( )
이 코드를 실행해보면 0 이 연속으로 두 번 출력되는데요. 위에서 설명드린 변수 범위의 특징에 따라서 print_nums() 함수에서 선언된 num 변수를 change_num() 함수 안에서 그대로 접근하기 때문입니다.
이 번에는 change_num() 함수 내에서 num 변수의 값을 변경해보았는데요. 무엇이 출력될까요?
def print_nums ( ) : num = 0 def change_num ( ) : num = 100 print ( num ) change_num ( ) print ( num ) print_nums ( )
이 번에는 100 과 0 이 출력이 됩니다. 이는 variable shadowing 현상으로 인해서 change_num() 함수 안에서 num 이라는 새로운 지역 변수가 생성되었기 때문입니다.
만약에 change_num() 함수 바깥에서 선언된 num 이라는 비지역 변수의 값을 change_num() 함수 안에서 갱신하고 싶은 경우에는 어떻게 해야할까요❓ num 변수 앞에 nonlocal 키워드만 붙여주면 됩니다❗
def print_nums ( ) : num = 0 def change_num ( ) : nonlocal num num = 100 print ( num ) change_num ( ) print ( num ) print_nums ( )
변수 앞에 nonlocal 키워드를 붙여주면 해당 변수는 새로운 지역 변수가 되지 않고 함수 밖에서 이미 선언된 비전역 변수를 가리키게 됩니다.
위 코드를 실행하면 처음에 의도했던 데로 100 이 두 번 연속으로 출력되는 것을 불 수 있습니다.
실전 예제
global 키워드나 nonlocal 키워드를 사용하지 않아서 실제로 파이썬으로 코딩할 때 겪을 수 있는 대표적인 문제에 대해서 다루면 좋을 것 같습니다.
아래 counter() 함수는 cnt 변수 값을 변경하기 위해서 내부에 선언된 _increment() 함수를 반환하고 있습니다.
def counter ( ) : cnt = 0 def _increment ( step = 1 ) : cnt += step return cnt return _increment count_up = counter ( ) print ( count_up ( ) ) print ( count_up ( 2 ) ) print ( count_up ( 3 ) )
얼핏보면 이 코드는 정상적으로 동작할 것 같지만 실행을 해보면 다음과 같은 오류가 발생을 합니다.
UnboundLocalError Traceback ( most recent call last ) < ipython-input-14-ee29d3b8aa1 0 > in < module > 9 10 count_up = counter ( ) — > 11 print ( count_up ( )) 12 print ( count_up ( 2 )) 13 print ( count_up ( 3 )) < ipython-input-14-ee29d3b8aa1 0 > in _increment ( inc ) 3 4 def _increment ( inc = 1 ) : —- > 5 cnt += inc 6 return cnt 7 UnboundLocalError: local variable ‘cnt’ referenced before assignment
왜 그럴까요? cnt 변수는 _increment() 함수 입장에서 봤을 때 바깥에서 선언된 비지역(nonlocal) 변수입니다. 하지만 cnt 변수의 값을 변경하려는 순간 함수 내부에서는 같은 cnt 이름을 가진 지역(local) 변수가 새롭게 생성이 되려고 할 것입니다.
cnt += step 는 cnt = cnt + step 와 동일하기 때문에 cnt 라는 지역 변수에 미처 초기값도 할당하지도 않은 체로 접근하려고 해서 문제가 발생하는 것입니다.
이 문제를 해결하기 위해서는 _increment() 함수 안에서 cnt 변수 앞에 nonlocal 키워드를 붙여주면 됩니다.
def counter ( ) : cnt = 0 def _increment ( step = 1 ) : nonlocal cnt cnt += step return cnt return _increment count_up = counter ( ) print ( count_up ( ) ) print ( count_up ( 2 ) ) print ( count_up ( 3 ) )
cnt 변수 앞에 nonlocal 키워드를 붙여주면 같은 이름의 새로운 지역 변수가 생성되는 대신에 함수 외부에 선언된 비지역 변수인 cnt 의 값을 변경되기 때문입니다.
코드를 수정 후에 실행해보면 다음과 같이 cnt 변수의 값이 변경되어 출력되는 것을 볼 수 있습니다.
1 3 6
전체코드
본 포스팅에서 제가 작성한 코드는 아래에서 직접 확인하고 실행해보실 수 있습니다.
https://deepnote.com/project/Blog-Yd3-DsV_QeGqo4AUZ7FyHg/%2Fpython-global-nonlocal.ipynb
마치면서
외부 범위에서 선언된 변수를 내부 범위에서 변경할 수 있다는 것은 프로그래밍을 할 때 양날의 검으로 작용할 수 있습니다. 예를 들어, 전역 변수의 값이 여러 함수에 의해서 변경될 수 있다면 해당 전역 변수의 값이 어떻게 변해갈지 예측하기가 쉽지 않을 것입니다. 그러므로 예상치 못한 버그가 발생할 확률이 높아지고 코드의 복잡도는 올라가며 유지보수는 힘들어 질 것 입니다.
3.4 전역변수와 지역변수 | 연오의 파이썬 프로그래밍 입문서
전역 이름공간에 정의되어, 프로그램 어디서든 부를 수 있는 이름을 전역변수(global variable)라고 한다. 함수 밖에서 변수를 정의하면 전역변수가 된다.
- Source: python.bakyeono.net
- Views: 33487
- Publish date: 52 minute ago
- Downloads: 108475
- Likes: 903
- Dislikes: 4
- Title Website: 3.4 전역변수와 지역변수 | 연오의 파이썬 프로그래밍 입문서
- Description Website: 전역 이름공간에 정의되어, 프로그램 어디서든 부를 수 있는 이름을 전역변수(global variable)라고 한다. 함수 밖에서 변수를 정의하면 전역변수가 된다.
Python프로그래밍_9주차 (4) 지역변수와 전역변수
- Source: Youtube
- Views: 75226
- Date: 44 minute ago
- Download: 17833
- Likes: 7485
- Dislikes: 7
[python] 파이썬 전역변수, 지역변수 정리 – 개발자 지망생
a = 10 # 전역변수 def func(): global a # 전역변수를 받아옴 a = 50 # 지역변수가 아닌 전역변수이므로 전역변수 a 값이 변경됨 print(f”2. {a}”) return a + 100 # 여기서의 a는 전역변수 a print(f”1. {a}”) print(f”3. {func()}”) # func() 함수가 호출되고 끝나면 func() 내부 지역변수가 살았다가 사라짐
g_var = “global” # 전역변수 def func(): l_var = “local” # 지역변수 print(l_var) # 지역변수 접근 가능 print(g_var) # 전역변수 접근 가능 print(g_var) # 접근 가능 # print(l_var) # func()의 지역변수 이므로, func() 외부에서는 없는 변수입니다. error
a = 10 # 전역변수 def func(): a = 20 # 지역변수 print(f”2. {a}”) return a + 100 # 여기서의 a는 바로위 지역변수 a print(f”1. {a}”) print(f”3. {func()}”) # func() 함수가 호출되고 끝나면 func() 내부 지역변수가 살았다가 사라짐
13 thg 9, 2021 — 1-1) 지역변수와 전역변수 구분. (1) 전역변수 – global variable. 프로그램이 시작하고 끝날때 까지 존재하는 변수 입니다.
- Source: blockdmask.tistory.com
- Views: 6299
- Publish date: 11 hours ago
- Downloads: 58195
- Likes: 4081
- Dislikes: 7
- Title Website: [python] 파이썬 전역변수, 지역변수 정리 – 개발자 지망생
- Description Website: 13 thg 9, 2021 — 1-1) 지역변수와 전역변수 구분. (1) 전역변수 – global variable. 프로그램이 시작하고 끝날때 까지 존재하는 변수 입니다.
지역변수와 전역변수, 파이썬 코딩 0교시 – 강의 31
- Source: Youtube
- Views: 89606
- Date: 23 hours ago
- Download: 87164
- Likes: 9831
- Dislikes: 8
[python] 파이썬 전역변수, 지역변수 정리
안녕하세요. BlockDMask 입니다.
오늘은 파이썬 전역변수와 지역변수에 대해서 정리해보겠습니다.
<목차>
1. 파이썬 전역변수와 지역변수 설명
2. 파이썬 지역변수, 전역변수 예제
1. 파이썬 전역변수와 지역변수 구분
1-1) 지역변수와 전역변수 구분
(1) 전역변수 – global variable
프로그램이 시작하고 끝날때 까지 존재하는 변수 입니다.
즉, 전역변수는 프로그램이 실행되고 변수가 생성 및 초기화 되고 프로그램이 끝날때 까지 존재하는 변수 입니다.
example.py 파일이 있다고하면 그 프로그램 처음부터 끝까지 같이 가는 변수 입니다.
(2) 지역변수 – local variable
지역변수는 어딘가에 속해있는 변수입니다.
속해있는 곳이 함수라면
함수의 지역변수의 경우에는 함수가 호출되었을때 생성되고, 함수가 끝나면 사라지게 됩니다.
속해있는 곳이 클래스라면
클래스의 객체가 생성될때 변수가 생성되고, 객체가 사라질때 사라지게 됩니다.
아래와 같은것들을 지역변수라고 합니다.
– 클래스 내부에 있는 변수
– 클래스 내부 메서드 안에 있는 변수
– 함수 내부에 있는 변수
등등 어딘가에 속해있는 변수 모두.
모두 지역변수이며, 각 범위안에서만 영향이 있습니다.
지역변수랑 전역변수를 한번 코드로 볼까요?
1-2) 지역변수와 전역변수 코드 확인
g_var = “global” # 전역변수 def func(): l_var = “local” # 지역변수 print(l_var) # 지역변수 접근 가능 print(g_var) # 전역변수 접근 가능 print(g_var) # 접근 가능 # print(l_var) # func()의 지역변수 이므로, func() 외부에서는 없는 변수입니다. error
g_var는 전역변수 이므로 함수의 안이든 밖이든 모두 접근이 가능합니다.
l_var는 func() 함수의 내부에 있는 지역변수 이므로 func() 함수 내부에서만 접근이 가능하고,
외부에서 접근을 하려고 했을경우엔 없는 변수 이므로 Name Error 에러가 나오게 됩니다.
**추가 설명 (이해를 돕기위함 입니다.)
예를 들어서 한 집에 와이파이 G와 L 두 종류가 있다고 하겠습니다.
G wifi 범위가 넓어서 집 전체를 차지할 수 있지만
L wifi는 범위가 작아서 방 하나정도를 차지하고 있다고 가정해보겠습니다.
L 와이파이는 그 방을 벗어나게되면 더이상 기능을 하지 못하게 됩니다. 방 안에서만 접근이 가능하죠.
지역변수를 L wifi 라 생각하면 됩니다.
방 안에서는 L wifi 가 당연히 접근이 가능하겠죠?
=> 함수, 클래스 안에서 지역변수 접근가능
방 안에서 L wifi 뿐만 아니라 G wifi 도 접근이 가능합니다. G wifi는 집 내부 어디서든 접근이 가능하니까요
=> 전역변수는 함수 클래스 안에서도 접근이 가능하다. 어디서나 접근 가능
방을 벗어나면 L wifi 에 접근이 불가능 하겠죠?
=> 함수, 클래스 밖에서는 지역변수 접근 불가
화장실에서 L wifi 접근 불가, 화장실에는 다른 L2 wifi 가 있겠죠?
=> 함수1, 함수2에 각 지역변수 1, 2가 있음.
그렇지만 다시 방안에 들어가면 L wifi에 접근이 가능합니다.
=> 함수 다시 호출하면 지역변수 생성되서 함수 내부에서 접근가능
G 와이파이는 집 전체 어디서든 접근이 가능합니다.
전역변수를 G wifi 라 생각하면됩니다.
집 어디서든, 함수 내부든 클래스 내부든 함수 외부든 언제 어디서나 접근이 가능한 그런 변수가
그것이 전역변수 입니다.
반응형
2. 파이썬 전역변수, 지역변수 예제
2-1) 지역변수와 전역변수 예제
a = 10 # 전역변수 def func(): a = 20 # 지역변수 print(f”2. {a}”) return a + 100 # 여기서의 a는 바로위 지역변수 a print(f”1. {a}”) print(f”3. {func()}”) # func() 함수가 호출되고 끝나면 func() 내부 지역변수가 살았다가 사라짐
코드를 살펴보면 프로그램이 시작하자마자 어디에도 속해있지 않는 변수 a를 10으로 초기화 했습니다.
이 a는 전역변수 입니다. 프로그램이 시작하고 끝날때 까지 존재합니다.
함수 func() 안에 있는 a = 20은 함수 내부에 속해있는 지역 변수 입니다.
함수가 호출될때 생성되고 함수 호출이 끝나면 사라지는 지역변수 입니다.
함수 func()안에서 a + 100 을 할때 여기에 있는 변수는 지역변수 a입니다.
함수나 클래스 내부에서 변수에 접근을 하게 되면 그 지역에 속해있는 지역변수에 디폴트로 접근하게 됩니다.
결과를 한번 살펴보겠습니다.
– 첫번쨰 결과 “1. 10″
print(f”1. {a}”) 는 전역변수 a를 뜻해서 10이 나오는 것을 알 수 있습니다.
– 두번째 결과 “2. 20″
print(f”2.{a}”)는 함수 func 내부에서 호출하기 때문에 func 함수 내부의 지역변수 a=20 을 출력하고 있습니다.
– 세번째 결과 “3. 120″
print(f”3.{a}”)는 func() 함수의 반환값인 20 + 100 = 120 이기 때문에 120이 나오게 됩니다.
즉 return a + 100 에서 불렀던 a는 함수 func내부의 지역변수 a=20 이라는 것을 알 수 있습니다.
2-2) 함수 내부에서 전역변수의 값을 변경하고 싶을때 global 을 사용
a = 10 # 전역변수 def func(): global a # 전역변수를 받아옴 a = 50 # 지역변수가 아닌 전역변수이므로 전역변수 a 값이 변경됨 print(f”2. {a}”) return a + 100 # 여기서의 a는 전역변수 a print(f”1. {a}”) print(f”3. {func()}”) # func() 함수가 호출되고 끝나면 func() 내부 지역변수가 살았다가 사라짐
바로 위 예제와의 다른점은 global a 가 있고 없고의 차이 입니다.
a를 사용하기 전에 global a 명령을 통해서 전역변수에 있는 a를 가지고 옵니다.
이제 a의 값을 변경하거나 하면 전역변수 a를 변경하는 것과 같습니다.
a = 10 # 전역 변수 a def func1(): a = 99 # 새로운 지역변수 a 이므로 이 값을 바꿔도 전역변수에는 영향이 없습니다. def func2(): global a # 전역변수 a를 가지고옴(=연결함, 참조함) a = 44 # 전역변수 a 의 값이 변경됨
코드로 보시면 한번에 이해가 가시나요?
이렇게 global 이라는 키워드를 통해서 전역변수를 참조할 수도 있습니다.
이상으로 파이썬 변수(지역변수, 전역변수)에 대해서 이야기해보았습니다.
읽어주셔서 감사합니다.
11.7 전역 변수 – 씽크 파이썬 – 더북(TheBook)
앞 예제에서 known은 함수 바깥에서 생성되었으므로 특별한 프레임 main에 소속된다. main에 속한 변수들은 어떤 함수에서도 접근할 수 있으므로 전역(global) 변수라고 부른다. 지역(local) 변수와 달리 전역 변수는 함수가 종료되어도 사라지지 않으며 다음 함수 호출에도 유지된다.
플래그(flag, 상태 표시)에 전역 변수를 주로 사용한다. 즉, 어떤 조건이 참인지 표시(플래스)하는 불(boolean) 변수를 전역으로 선언한다. 예를 들어 어떤 프로그램은 verbose라는 플래그를 사용해 출력 정보의 상세 수준을 결정한다.
전역 변수에 재할당을 시도하면 놀랄 것이다. 다음 예제는 함수 호출 여부를 알아내려고 작성한 것이다.
앞 예제에서 known은 함수 바깥에서 생성되었으므로 특별한 프레임 main에 소속된다. main에 속한 변수들은 어떤 함수에서도 접근할 수 있으므로 전역(global) 변수 …
- Source: thebook.io
- Views: 6648
- Publish date: 23 hours ago
- Downloads: 81954
- Likes: 3199
- Dislikes: 5
- Title Website: 11.7 전역 변수 – 씽크 파이썬 – 더북(TheBook)
- Description Website: 앞 예제에서 known은 함수 바깥에서 생성되었으므로 특별한 프레임 main에 소속된다. main에 속한 변수들은 어떤 함수에서도 접근할 수 있으므로 전역(global) 변수 …
파이썬) 전역,지역,글로벌변수
- Source: Youtube
- Views: 67086
- Date: 3 minute ago
- Download: 68708
- Likes: 2503
- Dislikes: 3
씽크 파이썬: 11.7 전역 변수
11 . 7 전역 변수
앞 예제에서 known은 함수 바깥에서 생성되었으므로 특별한 프레임 main에 소속된다. main에 속한 변수들은 어떤 함수에서도 접근할 수 있으므로 전역(global) 변수라고 부른다. 지역(local) 변수와 달리 전역 변수는 함수가 종료되어도 사라지지 않으며 다음 함수 호출에도 유지된다.
플래그(flag, 상태 표시)에 전역 변수를 주로 사용한다. 즉, 어떤 조건이 참인지 표시(플래스)하는 불(boolean) 변수를 전역으로 선언한다. 예를 들어 어떤 프로그램은 verbose라는 플래그를 사용해 출력 정보의 상세 수준을 결정한다.
verbose = True
def example1():
if verbose:
print(‘Running example1’)
전역 변수에 재할당을 시도하면 놀랄 것이다. 다음 예제는 함수 호출 여부를 알아내려고 작성한 것이다.
been_called = False
def example2():
been_called = True # 틀렸음
주제에 대한 관련 정보 파이썬 전역 변수
Bing에서 파이썬 전역 변수 주제에 대한 최신 정보를 볼 수 있습니다.
주제에 대한 기사 보기를 마쳤습니다 파이썬 전역 변수. 이 기사가 유용했다면 공유하십시오. 매우 감사합니다. 사람들이 이 주제와 관련하여 자주 검색하는 키워드: 파이썬 전역 변수 파이썬 클래스 전역변수, python 전역변수 선언, 파이썬 전역변수 리스트 선언, Python global 변수, 파이썬 전역변수 접근, 파이썬 global 함수, 파이썬 전역변수 지역변수, 전역변수 영어