파이썬 강의 노트 - 함수 FUNCTION
함수 FUNCTIONS
앞서 사용한 함수들은 내장 함수(built-in function)이기 때문에
따로 함수를 정의하지 않고 바로 사용할 수 있었습니다.
이제 함수를 스스로 정의해서 사용하는 방법을 소개합니다.
함수 예시:
def cylinder_volume(height, radius):
pi = 3.14159
return height * pi * radius ** 2
정의된 함수 호출(call):
cylinder_volume(10, 3)
이 실행문을 함수호출문(function call statement)라고 부릅니다.
def cylinder_volume(height, radius):
pi = 3.14159
return height * pi * radius ** 2
cylinder_volume(10, 3)
함수 머릿말 FUNCTION HEADER
1. 항상 def 로 시작합니다. 함수를 정의하겠다는 신호입니다.
2. 뒤 이어 함수 이름을 씁니다.
3. 함수 이름 뒤에 바로 괄호를 넣고, 요인(arguments)을 콤마로 구분하여 적습니다. 함수에 필요한 요인이 없는 경우에는 빈 괄호만 입력합니다.
4. 머릿말은 항상 콜론으로 끝냅니다.
함수 본문 FUNCTION BODY
1. 머릿말 다음 줄부터 들여쓰기로 본문이 시작됩니다.
2. 머릿말에서 정의한 요인을 활용하거나 새로운 변수를 만들어서 함수 내에서만 사용합니다.
3. 보통 본문은 return 구문을 포함합니다. 결과값을 표현하는 구문인데 이 구문이 없으면 결과값이 표시되지 않습니다.
함수 네이밍 규칙
1. 소문자, 숫자, 언더 바로 구성된 이름을 사용합니다. 스페이스를 포함할 수 없고, 문자 또는 언더 바로 시작해야 합니다.
2. 파이썬에서 먼저 약속되어 사용되고 있는 약어들은 사용할 수 없습니다.
3. 다른 사람이 보기에 이해하기 쉬운 이름을 붙입니다.
요인의 기본값 설정
def cylinder_volume(height, radius=5):
pi = 3.14159
return height * pi * radius ** 2
위의 함수와 달리 radius를 미리 5로 지정해둡니다. 별도의 언급이 없으면 radius는 5로 자동 계산됩니다.
함수 요인에 대한 값 설정 방법은 위치에 따른 지정과 이름에 따른 지정으로 두 가지 방법이 있습니다.
cylinder_volume(10, 7) # 위치에 따른 지정
cylinder_volume(height=10, radius=7) # 이름에 따른 지정
이를 활용하여 여러 가지 응용이 가능합니다.
변수의 범위 VARIABLE SCOPE
함수 안에서 정의된 새 변수는 함수 밖에서는 호출할 수 없습니다. 만약 호출하게 되면 에러가 발생합니다.
# 에러가 발생합니다
def some_function():
word = "hello"
print(word)
같은 변수를 다른 함수에 사용하는 것은 가능합니다.
# 정상 작동
def some_function():
word = "hello"
def another_function():
word = "goodbye"
올바른 함수 작성의 예시는 다음과 같습니다.
egg_count = 0
def buy_eggs(count):
return count + 30 # 계란 한 판 구매
egg_count = buy_eggs(egg_count)
다음은 UnboundLocalError 가 발생하는 코드입니다.
egg_count = 0
def buy_eggs():
egg_count += 30 # 계란 한 판 구매
buy_eggs()
def cylinder_volume(height, radius=5):
pi = 3.14159
return height * pi * radius ** 2
cylinder_volume(10, 7) # 위치에 따른 지정
cylinder_volume(height=10, radius=7) # 이름에 따른 지정
변수의 범위 VARIABLE SCOPE
함수 안에서 정의된 새 변수는 함수 밖에서는 호출할 수 없습니다. 만약 호출하게 되면 에러가 발생합니다.
# 에러가 발생합니다
def some_function():
word = "hello"
print(word)
# 정상 작동
def some_function():
word = "hello"
def another_function():
word = "goodbye"
올바른 함수 작성의 예시는 다음과 같습니다.egg_count = 0
def buy_eggs(count):
return count + 30 # 계란 한 판 구매
egg_count = buy_eggs(egg_count)
다음은 UnboundLocalError 가 발생하는 코드입니다.egg_count = 0
def buy_eggs():
egg_count += 30 # 계란 한 판 구매
buy_eggs()
Comments
Post a Comment