본문 바로가기

교육 노트/파이썬 강의

[파이썬 때려잡기] Python 강의 17 - 함수 - 전역변수, 지역변수

2018/09/04 - [교육 노트/파이썬 강의] - [파이썬 때려잡기] Python 강의 1 - Hello World!

2018/09/04 - [교육 노트/파이썬 강의] - [파이썬 때려잡기] Python 강의 2 - 변수와 자료형, 연산자

2018/09/05 - [교육 노트/파이썬 강의] - [파이썬 때려잡기] Python 강의 3 - 파이썬의 자료구조, 리스트 (list)

2018/09/05 - [교육 노트/파이썬 강의] - [파이썬 때려잡기] Python 강의 4 - 파이썬의 스트링 (string)

2018/09/05 - [교육 노트/파이썬 강의] - [파이썬 때려잡기] Python 강의 5 - 스트링과 리스트 처리-1

2018/09/05 - [교육 노트/파이썬 강의] - [파이썬 때려잡기] Python 강의 6 - 스트링과 리스트 처리-2

2018/09/05 - [교육 노트/파이썬 강의] - [파이썬 때려잡기] Python 강의 7 - 튜플 (tuple)

2018/09/05 - [교육 노트/파이썬 강의] - [파이썬 때려잡기] Python 강의 8 - 딕셔너리 (Dictionary)

2018/09/08 - [교육 노트/파이썬 강의] - [파이썬 때려잡기] Python 강의 9 - 집합 (set)

2018/09/08 - [교육 노트/파이썬 강의] - [파이썬 때려잡기] Python 강의 10 - 사용자 입출력

2018/09/09 - [교육 노트/파이썬 강의] - [파이썬 때려잡기] Python 강의 11 - 변수와 메모리

2018/09/09 - [교육 노트/파이썬 강의] - [파이썬 때려잡기] Python 강의 12 - 조건과 조건문(분기문)

2018/09/09 - [교육 노트/파이썬 강의] - [파이썬 때려잡기] Python 강의 13 - 반복문 while문

2018/09/10 - [교육 노트/파이썬 강의] - [파이썬 때려잡기] Python 강의 14 - 반복문 for문

2018/09/12 - [교육 노트/파이썬 강의] - [파이썬 때려잡기] Python 강의 15 - 함수와 프로시져

2018/09/14 - [교육 노트/파이썬 강의] - [파이썬 때려잡기] Python 강의 16 - 함수 - 디폴트 및 키워드 인수


함수 내에서 사용하는 변수는?



1. 지역변수

def hello():
s = "World"

print(s)


NameError: name 's' is not defined

기본적으로 함수내에서 선언된 변수는 지역변수이다.

지역변수는 일정 영역에서만 사용가능한 변수이다.

즉 함수내에서 정의된 s는 함수 바깥에서 사용하지 못한다.



2. 전역변수

def hello():
print(s)
s = "World"
hello()


World

함수 바깥 에서 선언된 변수는 전역변수다

아무 함수 내에서 사용가능하다. (그러나 일반적인 경우 코드가 난잡해지고 디버깅이 힘들어져 사용을 지양하는 편이다)

def hello():
print(s)

hello()
s = "World"


NameError: name 's' is not defined

hello()함수를 사용하기전에  s를 정의해주어야한다.


3. 전역? 지역?

s = "World"
def hello():
s = "HI"
print(s)

hello()
print(s)


HI
World

hello의 s는 지역변수이고 (함수내에서 사용하는 s가 새로 생성된것)

hello함수호출 이후에 print(s)에서 사용된 s는 전역변수 s이다


따라서 위와 같은 방식으로 s의 값을 변경하는것은 불가능하다.


4. 전역변수 수정

s = "world"
def hello():
global s
s = "HI"
print(s)

hello()
print(s)


HI
HI

다음과 같이 global 키워드를 통하여 전역변수 s를 수정할수있다.

728x90