now is better than never
[인공지능(AI) 기초 다지기] 1. 파이썬 기초 (2) 본문
2. 파이썬 기본 문법
- Function (함수)
- 어떤 일을 수행하는 코드의 덩어리
- 캡슐화: 인터페이스만 알면 타인의 코드 사용
- 함수 이름, parameter, indentation(들여쓰기), return value(optional)
- parameter: 함수의 입력 값 인터페이스
- argument: 실제 parameter에 대입된 값
def function (parameter #1, ...):
수행문 #1 (statements)
수행문 #2 (statements)
return <반환값>
- 함수와 함수 사이는 두 줄씩 띄움
parameter O | parameter X | |
return X | 함수 내 수행문만 수행 | parameter를 받아 수행문 수행 ex) list.sort() |
return O | parameter 없이 수행문 수행 후 결과값 반환 ex) sort(list) |
parameter를 사용하여 수행문 수행 후 결과값 반환 |
- Console I/O
- input() : 콘솔창에서 문자열을 입력 받는 함수
- print() : 화면에 출력, 타입이 다른 값들을 연결시켜 출력할 때 콤마(,)로 연결
- print formatting
- % string (old school formatting)
"%datatype" % (variable)
print( '%s %s' % ('one', 'two') ) -> s = string
print( '%d %d' % (1, 2) ) -> d = digit (십진수)
{.2f}. = float 2자리 - str.format (old school formatting)
"~{datatype}~".format(argument)
print( '{} {}'.format('one', 'two') )
print( '{} {}'.format(1, 2) ) - f-string (python 3.6 이후)
print(f"{변수명1} {변수명2}")
print(f"{변수명:*<20}) -> 왼쪽 정렬 20글자 나머지 *로 패딩
- % string (old school formatting)
- Condition (조건문)
if <조건>:
<수행문 1> # 조건 충족
else:
<수행문 2> # 조건 불충족
- == : 값이 같으면
- is : 메모리 주소가 같으면
- if 1 == True / if 0 == False
- 값이 여러 개면 and = all / or = any
- Loop (반복문)
for 변수 in 반복 범위:
<실행문>
- range(시작, 끝, 간격) : 시작과 끝(숫자 바로 앞까지)을 지정해서 그 수만큼 반복문 실행하게 해줌
- 0부터 시작
- 시퀀스형 자료형 : 문자열, 리스트 등 순서대로 하나씩 값을 갖고올 수 있는 자료형
# 조건이 만족하는 동안 반복 명령문 수행
# 반복 실행횟수가 명확하지 않을 때
i = 1
while <조건>:
<수행문>
i += 1
- 반복의 제어
- break : 특정 조건에서 반복 종료
- continue : 특정 조건에서 남은 반복 명령 스킵
- else : 반복 조건이 만족하지 않을 경우 1회 수행 후 종료
- Variable Nested Loops (가변적인 중첩 반복문)
- loop 안에 input을 받아서 사용자의 입력에 따라 가변적으로 반복됨
- while True는 권장하지 않음 (무한 루프에 빠질 가능성 높음)
* unpacking: 리스트의 값들을 개별적인 변수에 할당하는 것
- Debugging (디버깅)
- 문법적 에러를 찾기 위한 에러 메세지 분석 -> 대부분 인터프리터가 알려줌 (들여쓰기, 오탈자, 대소문자 등)
- 논리적 에러를 찾기 위한 테스트 -> def main() + __name__ : 파이썬을 실행하면서 true, false 코드 실행
- String (문자열)
- 시퀀스 자료형
- Indexing (인덱싱)
- 문자열의 각 문자는 개별 주소(offset)를 가짐
- 이 주소로 할당된 값을 가져오는 것이 인덱싱
- Slicing (슬라이싱)
- 문자열의 주소값을 기반으로 부분값을 반환
- [:]로 복사 가능
- [ start : end : step ]
- Indexing (인덱싱)
- 컴퓨터는 문자를 2진수 숫자로 변형해서 처리
- 문자열 선언은 ' 나 " 사용
- '를 표현하고 싶을 때는 앞에 \ 추가
- 줄 바꾸기 : """ (큰 따옴표 3개) 혹은 \n
- raw string : r"string" -> escape 문자 무시, 역슬래시 그대로 출력
- Function (함수)
- 함수에서 parameter를 전달하는 방식
- Call by Value (값에 의한 호출)
인자에 값만 넘김
함수 내 인자 값 변경 시, 호출자에 영향 X - Call by Reference (참조에 의한 호출)
인자에 메모리 주소를 넘김
함수 내 인자 값 변경 시, 호출자 값 변경됨 - Call by Object Reference (객체 참조에 의한 호출)
객체의 주소가 함수로 전달됨 (리스트 전체)
전달된 객체를 참조하여 변경 시 호출자에 영향 O
새로운 객체를 만들 경우 호출자에게 영향 X
- Call by Value (값에 의한 호출)
- Swap : 함수를 통해 변수 간의 값을 교환하는 함수
- swap_offset : 리스트의 전역 변수 값을 직접 변경
- swap_reference : 리스트 객체의 주소값을 받아 값을 변경
def swap_value(x, y):
temp = x
x = y
y = temp
a = [#어떤 값]
def swap_offset(offset_x, offset_y):
temp = a[offset_x]
a[offset_x] = a[offset_y]
a[offset_y] = temp
# 실제 swap이 일어나는 함수
def swap_reference(list, offset_x, offset_y):
# temp_list = list[:] # 들어온 리스트를 직접 안 만지고 복사하는 것이 제일 좋음
temp = list[offset_x]
list[offset_x] = list[offset_y]
list[offset_y] = temp
- Scoping Rule (변수의 범위)
- 지역변수 (local variable) : 함수 내에서만 사용
- 전역변수 (global variable) : 프로그램 전체에서 사용
함수 안에서 사용하고 싶으면 변수 앞에 global 선언
def f():
s = "I love London!" # local variable
print(s)
s = "I love Paris!" # global variable
f() # I love London!
print(s) # I love Paris!
- Recursive Function (재귀함수)
자기자신을 호출하는 함수
점화식과 같은 재귀적 수학 모형을 표현할 때 사용
재귀 종료 조건 존재, 종료 조건까지 함수호출 반복
def factorial(n):
if n==1:
return 1
else:
return n * factorial(n-1)
- Function Type Hint
- Dynamic Typing - 파이썬의 가장 큰 특징 -> 처음 함수를 사용하는 사용자가 interface를 알기 어려움
- 사용자에게 인터페이스를 확실하게 알려줌
- parameter의 타입과 return 타입을 명시 -> 문서화 시 정보를 명확히 알 수 있음
def do_function(var_name : var_type) -> return type:
pass
- 인터프리터 등을 통해 코드의 발생 가능한 오류를 사전에 확인
- 시스템 안정성 확보
- Docstring
- 파이썬 함수에 대한 상세스펙을 사전에 작성
- 함수명 아래에 세 개의 따옴표로 영역 표시
- 목적, 파라미터, 리턴, 용례
- 함수 작성 가이드 라인
- 가능한 한 짧게 작성 (+여러 개)
- 함수 이름에 함수의 의도를 명확히 할 것 ( Verb_Object 형태)
- 인자로 받은 값 자체를 바꾸지 말 것 (복사 형태로 임시변수 선언)
- 공통적으로 사용되는 코드, 복잡한 수식, 복잡한 조건을 함수화
- 코드는 하나의 보고서 -> 다른 사람이 이해할 수 있게 짤 것 (파이썬 코딩 컨벤션)
'Python > [코칭스터디 9기] 인공지능 AI 기초 다지기' 카테고리의 다른 글
[인공지능(AI) 기초 다지기] 2. 파이썬 다지기 (2) (0) | 2023.01.27 |
---|---|
[인공지능(AI) 기초 다지기] 2. 파이썬 다지기 (1) (0) | 2023.01.26 |
[인공지능(AI) 기초 다지기] 1. 파이썬 기초 (4) (0) | 2023.01.17 |
[인공지능(AI) 기초 다지기] 1. 파이썬 기초 (3) (0) | 2023.01.17 |
[인공지능(AI) 기초 다지기] 1. 파이썬 기초 (1) (0) | 2023.01.07 |