FUNDAMENTAL | 04-1. Python
20210910
1. 함수
함수(function): 려진 시점에 특정한 작업을 수행하며, 입력값과 출력값(반환값)을 가질 수 있다.
변수
: 값을 가리키는 이름.
여러가지 값으로 변할 수 있는 수
def
: 함수를 정의 (define). 들여쓰기 사용
인자(argument)
: 함수를 호출할 때 전달하는 입력값
매개변수(parameter)
: 입력값으로 주어진 인자(argument)를 받는 변수
반환값(return value)
: 함수가 종료될 때 호출지점으로 전달할 출력값
스코프(scope)
특정 위치에서 어떤 변수에 접근할 수 있는지, 또 정의된 변수가 어디까지 유효한지 정의된 범위
global scope
: 전역스코프. 함수 내부를 포함해 코드 어디서든 참조 가능
local scope
: 지역 스코프. 함수 내부에서 정의되어 밖에서 참조 불가능
인자 전달, return
-
매개변수를 정의하고 인자를 누락할 경우 오류 발생
-
함수를 호출할 때는 미리 정의된 값을 입력해야 함
-
함수가 받을 매개변수의 기본값을 지정해주면, 입력값이 없을 경우 해당 기본값을 사용
-
입력값이 여러개 일 때, 각 입력값의 기본값을 지정할 수 있음
(기본값이 있는 인자들이 기본값이 없는 필수 인자들의 뒤에 와야 함) -
함수가 실행된 후 그 값을 재사용 하기 위해서는 반환(return)을 명시적으로 표시해줘야 함
2. 제어문
코드 블럭의 흐름(실행 여부, 반복)을 제어
If
명제의 참, 거짓에 따라 코드 실행 여부 결정.
들여쓰기 후 코드 작성 필수.
else
: if 조건 이외의 경우(명제가 거짓인 경우) 실행
elif
: if 명제 이외의 경우에 또 다른 명제가 참일 경우에 실행
While
조건이 참인 동안 반복.
코드 블럭을 실행하기 전 가장 먼저 조건문을 검사해서, 조건문이 참이면 코드 블럭을 실행.
루프(loop, 고리).
무한 루프(infinite loop)
: 반복문이 끝없이 계속 실행되는 경우
For
for 뒤에는 a in A의 형태로, 목록A에서 값을 하나씩 꺼내서 a 변수에 담아 반복문을 실행
반복 가능한(iterable, 이터러블)
객체를 활용
3. 자료형
int, float
int
: integer, 정수.
float
: floating-point number, 실수(또는 부동소수점)
NoneType, boolean
NoneType
:
유한한 하나의 값. (None, 0)
그 무엇도 반환하지 않았다는 것을 알려주기 위함.
bool
:
True & False.
앞에 not을 붙이면 결과가 뒤집힘.
컨테이너 자료형 (Str, tuple, list, dict)
str
:
string(문자열) / "",'' 사용
인덱스, 슬라이스 가능
tuple
:
괄호() 안에 원하는 값들을 쉼표(,)로 구분.
인덱스, 슬라이스 가능.
값 변경 불가능.
튜플 안의 튜플 안의 값을 가져올 수 있음
nested_tuple = ((1, 2), (3, 4))
print(nested_tuple[1][0])
list
:
대괄호([,]) 사용
값 변경 가능
# 리스트 뒤에 값 하나 추가
list.append()
# 특정 값 삭제
list.remove()
# 특정 순서의 값 삭제
list.pop()
dict
:
중괄호({, })로 각 항목(item)을 나누고,(:)을 써서 키와 값을 나눔.
새로운 키를 넣어 값 추가 가능
# 키 추가
dictionary1['key1'] = 'value1'
# 키 제거
dictionary1.pop(key1)
# 키, 값 추출
dictionary.items()
4. 재귀함수(recursive function)
함수 내에서 그 함수 스스로를 사용하는 인셉션 같은 함수 종류
피보나치 수열
앞의 두 숫자를 더한 수가 다음 수가 되는 무한수열
(n번째 수는 n-1번째 수와 n-2번째 피보나치 수의 합)
# 재귀함수로 피보나치 수열 계산
def fibonacci(n):
if n <= 2:
number = 1
else:
number = fibonacci(n-1) + fibonacci(n-2)
return number
위와 같이 실행할 경우 발생하는 문제
-
최초의 n이 커질수록 속도는 기하급수적으로 느려지는 점
-
한 번 불린 함수/입력값 조합이 반복적으로 불리기 때문에 이미 계산한 값을 다시 계산해야 한다는 비효율성
메모이제이션(memoization)
중간 계산값을 기억해놓고, 다시 계산하는 대신 값을 바로 읽어 쓰는 방식으로 계산 시간을 줄이는 기법
# 딕셔너리를 활용한 메모이제이션
memory = {1: 1, 2: 1}
def fibonacci(n):
if n in memory:
number = memory[n]
else:
number = fibonacci(n-1) + fibonacci(n-2)
memory[n] = number
return number
print(fibonacci(100))
print(memory)
Author And Source
이 문제에 관하여(FUNDAMENTAL | 04-1. Python), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@tjddus0302/FUNDAMENTAL-04.-Python저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)