순차 자료형(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 함수로 정의하기에도 편리한 경우가 많다.
'딥러닝 기반 영상인식 개발 전문가 과정 > C언어, Python, 자료구조' 카테고리의 다른 글
7월22일 파이썬 예외처리, 파일, Using Pickle (0) | 2019.07.22 |
---|---|
7월19일 파이썬 예제 코드 (0) | 2019.07.19 |
7월18일 파이썬 예제 코드들 (0) | 2019.07.18 |
7월 18일 세트, 튜플, 사전(dict) (0) | 2019.07.18 |
7월 18일 리스트 (0) | 2019.07.18 |