기본 연산자
- 산술연산 : + , - , * , / , // , %
- 비교연산 : == , != , > , < , >= , <=
- 논리연산 : and , or , not
반복문
for문
1.리스트, 튜플 등 시퀀스 자료형 요소를 순회
-> 리스트 안의 내용을 반복해서 실행
fruits = ["apple","banana","cherry"]
for fruit in fruits:
print(fruit)
2.range 함수를 이용
-> range 안의 횟수만큼 반복
for i in range(5):
print(i)
while문 - 조건이 참인 동안 반복
while count < 5:
print(count)
count += 1
-> break : 반복문 종료 / continue : 현재 반복을 건너뛰고 다음 반복으로 이동
함수
def
간단하게 아래와 같은 형식으로 작성 후 추후 사용할때 함수이름(변수)와 같은 형태로 사용가능하다.
def 함수이름 ( 매개변수 ) :
코드블록
return 반환값
lambda 함수
함수를 한 줄로 작성 가능한 익명함수이며 , 간단한 연산이나 데이터 변환에 유용하다.
def hap(x,y):
return x+y
위와 같은 def 함수를 lambda로 정의 시
(lambda x,y:x+y)(a,b)
위와 같이 표현 가능하다.
즉 코드 간결화를 할 때 , 계속 사용하는 함수가 아닌 일회성 함수일 때 자주 사용한다고 보면 될 것 같다.
가변인자
*args
가변 인자 : 임의의 여러 개의 인자를 함수에 전달할 때 사용
def f(x,*args):
# x ->> 1
# *args -> (2,3,4,5)
함수를 다음과 같이 호출한다.
f(1,2,3,4,5)
추가적인 인자를 튜플로 전달한다.
아래와 같은 예시를 살펴보면
def avg(x,*more):
return float(x + sum(more)) / (1+len(more))
로 정의하고
avg(10,11)
10.5
의 결과값이 나오게 된다.
x = 10 이 되고 , more은 (11,)가 된다.
x + sum(more)은 10 + 11 = 21이 된다.
1+len(more)은 1 + 1 = 2가 된다.
따라서 최종적으로 float(x+sum(more))/(1+len(more)) 이 부분이 float(21) / 2 가 되어 10.5가 출력된다.
**kwargs
키워드 가변인자 : 임의의 개수의 키워드 인자도 받을 수 있다.
-> 키워드 인자를 함수에 딕셔너리 형태로 전달할 때 사용한다.
아래와 같은 예시를 살펴보면
def f(x, y, **kwargs):
...
f(2, 3, flag=True, mode='fast', header='debug')
def f(x, y, **kwargs):
# x -> 2
# y -> 3
# kwargs -> { 'flag': True, 'mode': 'fast', 'header': 'debug' }
와 같은 형식으로 키워드 인자가 들어가는 것을 확인할 수 있다.
이터레이터와 제너레이터
▶이터레이터
반복자 : 반복 가능한 객체에서 값을 순차적으로 꺼내는 역할
상태 유지: 현재 위치를 기억하여 next() 호출 시 다음 값을 반환
▶제너레이터
이터레이터를 생성해 주는 함수로 이터레이터와 마찬가지로 next() 함수 호출 시 그 값을 차례대로 얻을 수 있고,
이 때 차례대로 결과를 반환하고자 return 대신 yield 키워드를 사용한다.이 외에도 아래의 특성으로 인해 사용한다.
지연평가 : 필요한 시점에 값을 생성 ( yield 키워드를 만나면 값을 반환하고 함수의 실행 상태를 저장 )
상태 유지 : 마지막 실행 지점에서 멈추고 상태를 기억하여 다음 호출 시 그 지점부터 재개 (다음 호출 시 저장된 상태서 시작)
메모리 효율성: 한 번에 하나의 값만 생성하므로 메모리 사용을 최소화코드
간결화 : 복잡한 이터레이터 코드를 간단히 작성 가능
제너레이터와 이터레이터 차이
이터레이터(Iterator) | 제너레이터(generator) | |
구현방식 | 클래스 형태 ( __iter__()와 __next()__ 메서드 구현 ) |
함수 형태 ( yield 키워드 사용 ) |
사용 용이성 | 상대적으로 복잡한 구조 | 간단한 코드로 구현 가능 |
메모리 효율성 | 모든 값을 메모리에 저장 | 값을 필요할 때마다 생성 |
'파이썬 > 파이썬 기본' 카테고리의 다른 글
Python 공부일지 - 2 (0) | 2024.07.06 |
---|