# 이 문장은 파이썬에 의해 실행되지 않습니다.
adjustment = 0.5 # '#' 기호 뒤의 내용은 실행 시 무시됩니다.내장 함수와 도움말
Tip학습 목표
- 함수의 목적을 설명할 수 있습니다.
- 파이썬 내장 함수를 호출하는 방법을 익힙니다.
- 함수 호출을 중첩하여 사용하는 방법을 이해합니다.
- 도움말(help) 기능을 사용하여 내장 함수의 문서를 조회합니다.
- SyntaxError와 NameError의 차이점을 파악하고 해결 방법을 익힙니다.
Note질문
- 내장 함수는 어떻게 사용하나요?
- 함수의 동작 방식을 어떻게 확인할 수 있나요?
- 프로그래밍 중에 발생하는 오류에는 어떤 것들이 있나요?
주석(Comments)을 활용한 코드 설명
함수의 인수(Arguments)
- 함수에 전달하는 값을 인수(Argument)라고 합니다.
len함수는 정확히 하나의 인수를 받습니다.int,str,float함수는 데이터의 형식을 변환하여 새로운 값을 반환합니다.print함수는 인수가 없어도 실행되며, 여러 개의 인수를 동시에 받을 수도 있습니다.- 인수가 없더라도 함수를 호출할 때는 반드시 소괄호(
())를 붙여야 파이썬이 이를 함수 호출로 인식합니다.
print('before')
print()
print('after')before
after
함수의 반환값(Return Value)
- 모든 함수는 실행 후 결과를 반환합니다.
- 명시적인 반환값이 없는 함수는 파이썬의 특수 객체인
None을 반환합니다.None은 ’값이 없음’을 나타냅니다.
result = print('example')
print('result of print is', result)example
result of print is None
주요 내장 함수: max, min, round
max: 주어진 값들 중 최댓값을 찾습니다.min: 주어진 값들 중 최솟값을 찾습니다.- 숫자뿐만 아니라 문자열(사전순 기준)에서도 작동합니다.
print(max(1, 2, 3))
print(min('a', 'A', '0'))3
0
인수의 타입 제한
max와min은 최소 하나 이상의 인수가 필요하며, 서로 비교 가능한 타입의 인수가 전달되어야 합니다. 그렇지 않으면 오류가 발생합니다.
# print(max(1, 'a')) # TypeError 발생인수의 기본값(Default values)
- 일부 함수는 인수를 생략할 경우 사용하는 기본값이 정해져 있습니다.
- 예를 들어
round함수는 두 번째 인수를 생략하면 소수점 첫째 자리에서 반올림하여 정수를 반환합니다.
print(round(3.712))
print(round(3.712, 1))4
3.7
메서드(Methods)
- 특정 객체에 속해 있는 함수를 메서드(Method)라고 부릅니다.
- 객체 이름 뒤에 점(
.)을 찍고 호출합니다.
my_string = 'Hello world!'
print(len(my_string)) # 일반 함수 호출
print(my_string.swapcase()) # 메서드 호출12
hELLO WORLD!
- 여러 메서드를 이어서 호출하는 메서드 체이닝(Method Chaining)도 가능합니다.
print(my_string.upper().isupper())True
도움말 확인하기: help
help()함수를 사용하여 내장 함수의 상세 문서를 확인할 수 있습니다.
help(round)Help on built-in function round in module builtins:
round(number, ndigits=None)
Round a number to a given precision in decimal digits.
The return value is an integer if ndigits is omitted or None. Otherwise
the return value has the same type as the number. ndigits may be negative.
- Jupyter Notebook에서는 함수 이름 뒤에
?를 붙여 실행하거나, 함수 이름에서Shift + Tab을 눌러 도움말을 볼 수 있습니다.
구문 오류 (Syntax Error)
- 파이썬 문법에 맞지 않게 코드를 작성했을 때 발생하며, 이 경우 코드는 실행되지 않습니다.
# name = 'Feng # 닫는 따옴표 누락
# age == 52 # 할당 시 등호 중복 (비교 연산자로 오해될 수 있음)실행 오류 (Runtime Error)
- 문법은 맞지만 실행 도중에 발생하는 오류입니다. 대표적으로 정의되지 않은 변수를 사용할 때 발생하는
NameError가 있습니다.
age = 53
# remaining = 100 - aege # 오타로 인한 NameError 발생코딩 문제 해결을 위한 도움 받기
코딩 중에 오류가 발생하거나 막막할 때는 다음과 같은 방법을 활용할 수 있습니다.
- 검색 엔진 활용: 에러 메시지의 마지막 줄을 복사하여 검색해 보세요. Stack Overflow와 같은 커뮤니티에서 많은 도움을 얻을 수 있습니다. 단, 해결책을 이해하지 못한 채 복사하여 붙여넣는 것은 피해야 합니다.
- 동료에게 질문하기: 문제를 명확히 정리하여 주변에 조언을 구하세요.
- 고무 오리 디버깅: 코드의 작동 방식을 소리 내어 설명하다 보면 스스로 해결책을 찾는 경우가 많습니다.
생성형 AI 활용 가이드
최근에는 ChatGPT와 같은 생성형 AI를 활용하여 코딩 도움을 받는 경우가 많아지고 있습니다. 에러 메시지를 입력하면 즉각적인 해결책을 제안받을 수 있어 편리하지만, 다음과 같은 주의사항을 숙지해야 합니다.
- 작동 원리의 이해: 생성형 AI는 실제 추론을 하는 것이 아니라, 학습된 방대한 데이터를 바탕으로 확률적으로 가장 적절해 보이는 답변을 생성합니다. 따라서 답변이 논리적으로 완벽하지 않거나 틀린 정보를 정답처럼 제시할 수 있습니다(환각 현상).
- 검증의 필요성: AI가 제공한 코드는 반드시 사용자가 직접 검토하고 테스트해야 합니다. 기초 지식이 부족한 상태에서 AI에만 의존하면 문제 해결 능력을 기르기 어려워집니다.
- 윤리적 및 환경적 고려: AI 모델 학습과 운영에는 막대한 전력과 자원이 소비됩니다. 또한 데이터 저작권이나 투명성 문제에 대해서도 지속적인 논의가 이루어지고 있습니다.
학습 과정에서의 권장 사항: 이 워크숍 기간 동안은 가급적 AI 도구에 의존하기보다 직접 문제를 해결해 보시길 권장합니다. 1. 입문 단계의 오류는 웹 검색만으로도 충분히 해결 가능한 경우가 많습니다. 2. 직접 오류를 수정하며 쌓은 기초 지식은 나중에 AI가 생성한 코드가 안전하고 정확한지 판단할 수 있는 중요한 기준이 됩니다. 3. 스스로 고민하고 해결하는 과정 자체가 프로그래밍 실력을 향상시키는 가장 확실한 방법입니다.
Important연습 문제
실행 순서 파악하기
- 다음 연산이 수행되는 순서를 설명해 보세요.
- 연산 종료 후
radiance변수의 최종값은 무엇인가요?
radiance = 1.0
radiance = max(2.1, 2.0 + min(radiance, 1.1 * radiance - 0.5))
Caution해답
순서: 1.1 * radiance (1.1) → 1.1 - 0.5 (0.6) → min(1.0, 0.6) (0.6) → 2.0 + 0.6 (2.6) → max(2.1, 2.6) (2.6) 최종값: 2.6
Important연습 문제
데이터 타입과 함수
다음 코드의 결과를 예측해 보고, max(len(rich), poor)와 같이 실행했을 때 어떤 일이 벌어질지 생각해 보세요.
easy_string = "abc"
print(max(easy_string))
rich = "gold"
poor = "tin"
print(max(rich, poor))
print(max(len(rich), len(poor)))
Caution해답
max(len(rich), poor)는 max(4, 'tin')이 되어 정수와 문자열을 비교할 수 없으므로 TypeError가 발생합니다.
Note핵심 요약
- 주석을 사용하여 코드에 대한 설명을 남길 수 있습니다.
- 함수는 인수를 전달받아 작업을 수행하고 결과를 반환합니다.
max,min,round등 다양한 내장 함수가 제공됩니다.- 도움말 기능을 통해 함수의 상세 사용법을 확인할 수 있습니다.
- 구문 오류(Syntax Error)와 실행 오류(Runtime Error)의 차이를 이해하고 메시지를 통해 문제를 해결합니다.