본문 바로가기

파이썬/파이썬 기본

Python 공부일지 - 1

반응형

기본 연산자

- 산술연산 : + , - , * , / , // , %

- 비교연산 : == , != , > , < , >= , <=

- 논리연산 : 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