순차 자료형(Sequence) 내장 함수

 

: range

range({start = 0, } end {, step = 1})

# start부터 end까지의 순차적 리스트를 step 간격으로 생성

 

:enumerate

순차 자료형에서 현재 아이템의 색인과 함께 처리하고자 할 때 흔히 사용

 

객체

 

: 이름과 객체

  • 파이썬에서는 모든 자료(데이터)들은 객체의 형태로 저장된다.
  • 파이썬의 변수는 컴팡일러 언어처럼 변수에 할당된 값을 지정하는 저장공간(메모리)의 주소 심볼릭이 아니다.
  • 변수는 단지 객체의 이름(심볼)일 뿐이다.
  • 파이썬의 객체 이름(변수)과 객체의 ID(주소)는 심볼 테이블에 함께 저장되어 관계를 갖게 된다.

 

 

 

 

:심볼 테이블

  • 변수의 이름과 저장된 데이터의 주소를 저장하는 테이블
  • 심볼테이블의 내용을 살펴보기 위해 globals(), locals() 내장 함수를 이용
  • 두 함수는 해당 스코프 내 심볼 테이블의 내용을 dict 타입의 객체로 반환한다.

 

: 레퍼런스 카운트와 쓰레기 수집

  • 레퍼런스 카운트(Reference Count) : 객체를 참조하는 참조 수
  • 레퍼런스 카운트가 0이 되면 사용되지 않는 객체로 판단, 자동으로 사라짐
  • 이러한 작업을 쓰레기 수집(Garbage Collection)이라 함

 

 

: 객체 ID

id() 함수를 이용하면 객체의 주소를 식별할 수 있다.

- 만일 두 객체의 ID가 동일하면, 같은 객체를 참조하고 있는 것

 

: 객체의 복사

레퍼런스 복사 - 객체를 참조하는 주소만 복사하는 것

 

[:] 이용한 복사 - 객체 전체를 가리키는 [:] 를 이용하여 복사한다.

 

copy 함수 이용 - copy 모듈의 copy 함수를 사용하여 복사한다.

 

deepcopy 함수 이용

- copy 모듈의 deecopy 함수를 사용하여 복사한다.

- deepcopy는 복합객체를 재귀적으로 생성하고 복사한다.

 

 

조건문

 

: if - elif - else

: 조건 표현식(Conditional Expression)

C 또는 Java의 3항 연산자와 같은 역할을 한다

value = {true-expr} if {condition} else {false-expr}

 

>>> money = 8500

>>> print("by taxi" if money > 10000 else "by bus") by bus

 

 

반복문

: for

for {타깃} in {객체}:

 구문1

 구문2

else :

 구문3

 

{객체}는 list, str, tuple, bytes, bytearray, range 등 시퀀스 자료형

반복횟수는 {객체}의 크기

{객체} 안의 객체를 하나씩 순차적으로 꺼내우 구문 1,2가 실행됨

반복이 정상적으로 끝나면 else 블록이 실행

for문 내에서 break로 빠져나오면 else 블록은 실행되지 않음

 

 

: enumerate

요소의 값은 물론 인덱스가 필요한 경우 enumerate() 함수를 이용한다.

: break

어떤 조건에서 반복을 중지하고 빠져나가야 하는 경우 break

: continue

Continue문을 만나면, 이후 구문은 실행하지 않고 처음으로 이동한다.

 

 

: List 내포

리스트 내포(List Comprehension)를 이용하면 좀 더 직관적으로 프로그램을 만들 수 있다

[{표현식} for {gkdahr} in {객체} if {조건}]

>>> a = [1, 6, 4, 13, 8, 3]

>>> a 리스트 항목 중, 짝수인 것만 2배 하여 result에 저장

>>> result = [num * 2 for num in a if num % 2 == 0]

>>> result

[12, 8, 16]

 

 

: while

while {조건식}:

  구문1

  구문2

else:

  구문3

  • 조건이 참인 동안 구문1,2가 반복 실행
  • Else 블록은 while 문을 빠져나올 때 실행
  • 단, break로 while문을 빠져나올 경우 else 블록은 실행 x
  • 무한루프 주의, 경우에 따라서는 의도적으로 무한루프 가능

 

 

함수(Function)

 

:함수란

입력값을 가지고 어떤 일을 수행한 다음 그 결과물을 내 놓는 것

함수를 사용하는 이유

- 반복되는 부분이 있을 경우 재활용을 위해

- 프로그램의 흐름을 일목요연하게 볼 수 있다

 

함수 정의하기

  • def 키워드를 이용하여 정의
  • 함수 이름과 인수들이 기술
  • 함수 선언부는 :로 끝난다
  • 들여쓰기 규칙이 적용
  • 함수의 끝은 들여쓰기가 적용 안되는 라인에서 끝난다

 

 

: 함수도 객체다, 함수도 객체이므로 다음과 같은 호출도 가능하다

t = times

print(t(100, 100))

print(t, times, sep = ",")

 

: return

  • 함수를 종료시키고, 해당 함수를 호출한 곳으로 되돌아 가게 한다
  • 파이썬에서는 어떤 종류의 객체도 반환할 수 있다
  • 여러 객체를 return하면 튜플로 반환한다
  • return문을 만나면 함수는 종료한다
  • return문만 사용하면 None을 반환한다
  • 함수가 끝날 때까지 종료할 필요가 없고 반환할 값이 없을 때는 return 문이 없어도 된다.

 

: 인수의 전달 방법

  • 기본적으로 참조에 의한 호출(Call by reference)이다
  • 하지만 인수의 타입이 변경가능(mutable), 변경불가(immutable)에 따라 처리 방식이 달라진다.

 

: 스코핑 룰(Scope)

  • 이름공간(Namespace) : 프로그램에서 사용되는 이름들이 저장되는 공간
  • 이름은 값을 치환할 때 해당 값의 객체와 함께 생겨나고 이름공간에 저장
  • 이름공간에 저장된 이름을 통해 객체를 참조

 

이름공간의 종류

  • Local Scope : 함수 내부
  • Enclosed : function in function
  • Global : 모듈 내부
  • Built-in : 내장 영역

동일한 이름이 여러 영역에 있다면 LEGB순으로 찾는다.

 

함수 내부에서 전역 객체를 사용해야 하는 경우 global 선언문을 이용

가능하면 함수 내부에서 글로벌 객체를 직접 사용하는 것은 피한다

g = 1

def func3(a):

global g

g = 3 # 본 객체는 글로벌 객체이다

return a + g

print(func3(10))

print(g)

 

: 함수의 인수

인수는 필요한 개수만큼 선언할 수 있다

기본값이 필요하면 함수 선언시 지정할 수 있다

 

: 함수의 인수 - 키워드 인수

인수값을 인수 이름으로 전달할 수 있다 (함수의 정의에 따른다)

 

: 함수의 인수 - 가변인수

정해지지 않은 개수의 인수값을 받을 때 사용한다

선언시 인수명 앞에 *를 붙여 선언한다

 

: 함수의 인수 - 사전 키워드 전달

정해지지 않은 키워드 인수는 모두 dict로 받을 수 있다

선언시 인수명 앞에 **를 붙인다

사전 키워드 인수는 선언의 맨 마지막에 있어야 한다

 

: 함수 객체를 인수로 전달

파이썬에서는 함수도 객체이다. 따라서 인수로 함수를 전달하는 것도 가능하다.

 

 

:익명 함수(Lambda)

  • 이름이 정의되지 않은 "익명 함수"를 선언
  • 데이터 분석/변형 함수에서 파라미터로 처리 함수를 인자로 받는 경우가 많다.

 

: Lambda를 이용한 정렬

정렬할 때, key 함수로 정의하기에도 편리한 경우가 많다.

+ Recent posts