안녕하세요!
이번 글에서는 파이썬의 함수(Function)에 대해서 알아보려고 합니다.
1) 함수
2) 함수를 정의하기
2-1) DocString
2-2)함수를 정의하면 내부적인 동작
순서로 알아보겠습니다.
1) 함수
함수는 input을 넣으면 일련의 과정을 거처 output이 나오는 개념 입니다.
우리는 크게 3가지만 신경쓰면 됩니다.
1) 뭘 전달할지
2) 어떤 과정을 거칠지
3) 뭘 내보낼지
크게는 이 3가지 내용입니다.
2) 함수를 정의하기
def FunctionName(parameter):
"""docstring"""
innerActionCode
return Class object or fuction or variable
def hello():
"""안녕하세요라고 말하는 함수"""
print("안녕하세요")
return "안녕하세요"
위에서 함수는 정의 부분과 body 부분으로 나누는데요
def 는 함수를 정의한다는 말입니다.
it must be followed by the function name 그다음에은 함수 이름이 따라와야 하구요
괄호로 둘러싼 형식의 parameter를 작성을 해야합니다.
그리고 함수 body의 시작은 콜론 다음줄의 indented 된 후 부터 시작입니다.
함수 body의 시작부터는 string literal을 선택적으로 사용할 수 있는데 명칭은 Docstring이라고 부릅니다.
2-1) DocString
내부적으로 1번째 줄에는 docstring이 위치할 수있습니다.
docstring은 함수에 대한 설명을 적을 수 있으며
docstring을 작성하는 습관은 아주 좋은 습관이라고 말하고 있습니다.
파이썬의 장점은 가독성에 있기에 잘 읽도록 도와주는 것은 모두 좋은 행동인거같습니다
""" """ double quotation mark 3쌍으로 작성합니다.
2-2) 함수를 정의하면 내부적인 동작
함수를 정의하면 함수에서만 사용할 변수를 위해 local symbol table 이 생성됩니다.
이제 우리가 변수를 assignment하면 local symbol table에 올립니다.
반면에 변수는 local symbols table을 먼저 참조하는데요
그다음에는 둘러싼 함수의 symbol tables를 찾습니다.
그다음에는 global symbol table을 찾구요
마지막에는 built-in name을 찾습니다
이래도 없으면
그러므로 전역변수와 지역변수는 함수 내에서 직접적으로 할당되어 질 수 없습니다.
우리가 함수 내부에서 변수를 assignment 하면 local symbol table에 올리는데,
변수를 참조할 때는 local symbol table에서 찾고나서 위의 순서대로
variables of enclosing function table에서도 찾고
global -> built-in 순으로 뒤지기 때문에
전역변수나 바깥 함수에 있는 값을 가져와서 수정할 수 가 없다는 말입니다.
예시를 보여드리겠습니다.
x = 10 # 전역 변수
def foo():
x = 20 # 지역 변수
print("foo 내부 x:", x)
foo() # foo 내부 x: 20
print("전역 x:", x) # 전역 x: 10
def bar():
global x
x = 30 # 전역 변수 변경
print("bar 내부 x:", x)
bar() # bar 내부 x: 30
print("전역 x:", x) # 전역 x: 30
# Global variable은 함수 안에서도 읽을 수는 있지만 같은 값이 함수 내부에도 있고
# 수정을 위해서는 glboal 이라는 키워드를 가지고 수정을 해주어야합니다.
.
'파이썬 > 사용법' 카테고리의 다른 글
[python] 파이썬 에러 커스텀하기 (3) | 2025.07.31 |
---|---|
[python] 파이썬 에러(Error)와 예외(Exception) 정리 (7) | 2025.07.29 |
[python] 파이썬 예외처리 (Exception Handling) (0) | 2025.07.29 |
[python] 파이썬 모듈, 패키지, 임포트 총 정리 (2) | 2025.07.29 |
[python] 파이썬 리스트 for문 사용법 4가지 총 정리 (2) | 2025.07.29 |