본문 바로가기

KOSA 클라우드 솔루션즈 아키텍트 양성과정

[5.11] Python 3일차

# zip() 내장 함수

  - zip은 이터레이터 두 개 이상을 포함

 

# 리스트 (List Comprehension)

  - for문을 이용해 리스트를 생성하는 방법

  - cf.) 사전 내포( dictionary comprehension)

  - 반복문 내에서 리스트에 원소를 추가하는 방법보다 빠름

  - if는 지원하지만 else구문은 지원하지 않음

 

# 조건부 표현식(삼항 연산자)

  - 표현식1 if 조건식 else 표현식2

 

# while문

  - while문을 사용할 때는 반복을 빠져나올 수 있도록 해야함

  - 반복문을 빠져 나오기 위해서 코드 블록 내에서 비교식이  False가 되는 논리가 필요함

 

# 복합대입연산자

  - 이항연산자 + 대입연산자

 

# 무한루프

  - 반드시 루프를 빠져나오는 논리가 포함되어야 함

 

# break 문

  - break문을 직접 감싸는 코드블록을 빠져나가게 해줌

 

# continue 문

  - 조건에 일치하는 코드는 건너뛰고 다음 코드 실행

 

# Error & Exception

  - 예외(exception) : Run-Time Error : 실행 중 발생하는 에러

  - 예외처리(exception handling) : 프로그램이 중단되지 않고 실행될 수 있도록 해주는 것 : try, except

 

# 함수(function)란?

  - 코드 블록에 이름 붙인 것

  - 블랙박스(B/B) : 함수

  - 기능

  - 값

 

# 서브루틴, 서브프로그램

  - 함수(반환값), 프로시져

 

# 이름을 붙인다는 것의 의미

  - 호출하겠다, 사용하겠다. 재사용(reuse)

 

# 파이썬 함수의 특징

  - 1st-class-citizen, 1st-class-object

  - cf.) 1급 객체 : 1) 변수에 저장

                       2) 함수의 인자로 사용

                       3) 함수로부터 반환 가능한 객체

  - 파라미터에 대해 데이터 타입을 지정하지 않아도 됨

  - 반환값의 데이터 타입을 지정하지 않아도 됨

 

# 변수

  - 메모리 주소에 이름 붙인 것

  - 스코프(scope) : 변수의 생애주기

  - 로컬변수(지역변수) :  : 코드 블록 내에서 선언(생성)되고 코드 블록이 종료되면 사라짐

  - 글로벌 변수(전역변수)

 

# 파라미터

  - 함수의 지역변수(로컬변수)

  - 로컬변수

 

# 식별자(identifier, 이름) 명명 기법

  - camelCase : 문자열의 첫 번째 문자는 소문자, 그 다음부터 나오는 단어의 첫번째는 대문자

  - snake_case : 보통 소문자로 쓰지만 대문자로 쓰는 경우도 있음. 다만, 대문자와 소문자를 섞어 쓰지는 않음

  - PascalCase : 모든 단어의 첫 글자는 대문자

  - hungarian 표기법 : 변수명에 데이터 타입을 써줌 (요즈음에는 안 쓰는 표기법)

 

# 파이썬 식별자

  - 변수, 함수, 메서드 : snake_case

  - 클래스 : PascalCase

  - 상수 : snake_case

  - 변수와 클래스 : 명사위주

  - 함수와 메서드 : 동사위주

 

# 인자/인수 (Arguments)

  1) 위치 인자 (positional args.)

  2) 키워드 인자 (keyword args.)

  3) default 값 (함수 호출 시 인자를 생략하면  default값이 주어짐, 키워드 인자로 사용될 때 특히 유용)

     - Default Parameter가 아닌 파라미터는 반드시 주어져야 함

 

# object, instance

  - 클래스로부터 객체를 만드는 과정을 인스턴스화(instanciation)

  - object method 용어는 안 쓰고 instance method라고 함

  - instance method vs class method

  - special method : 밑줄 두 메서드 이름을 감싸는 형태

  - instance method는 첫 번째 인자가 자동적으로 객체 자신이 대입됨 (__init__(self, ~~~))

 

# 원래 인스턴스의 속성은 직접 접근하면 안 됨

# 파이썬은 이름을 알면 직접 접근해서 읽거나 수정 가능

 

# 상속(Inheritance)

  - 확장한다(extend)

  - 상위 클래스로 갈수록 추상, 일반화, 공통의 특성(속성)/행위(메서드)

 

# 가변인자/가변키워드 인자

  - - *, **

 

 

# Ctrl + shift + k로 줄 삭제 가능

 


# enumerate, break, 예외처리 #

 

enumerate

 * enumerate를 사용하여 튜플 형식으로 결과를 출력할 수도 있음

 

넘겨받은 값을 사용하지 않는 경우

* 넘겨받는 값을 사용하지 않는다면 _을 이용해 그 의도를 명시적으로 나타내는 것이 좋음

 

enumerate를 사용하지 않은 경우

* enumerate를 사용하지 않고, name_list의 길이 3을 이용해 반복문 3번 반복하는 방법

 

zip 객체

*  zip() 내장함수를 통해 객체위치 확인

 

리스트 형식으로 출력

* zip() 내장 함수를 이용해 리스트로 만들 수도 있음

 

zip 내장 함수의 이터레이터를 활용

*  zip() 내장 함수의 이터레이터를 활용해 곧 바로 출력

 

zip 내장 함수를 다른 방식으로 사용

* 홍과 김을 개별적으로 리스트 안에 튜플 형식으로 담을 수 있음

 

immutable

* 문자열은 변경 불가능 함

 

리스트 각각의 원소를 2배로

* 상단의   반복문은 temp에 value * 2를 바인딩 후 바인딩한 값을 사전에 정의한 빈 리스트에 담아줌

* 하단의 반복문은  list comprehension으로 바로 result에 value * 2를 담을 수 있음

 

짝수만 튜플로 출력하기

* 처음에는 result가 리스트였음

* result = tuple(result)로 인해  result가 tuple형식의 result를 바인딩함

 

list comprehension으로 짝수만 출력

* 리스트 내포문 뒤에 조건문을 덧붙일 수 있음

 

짝수는 두 배, 홀수는 세 배

 

조건부 표현식

* 리스트 내포로 표현할 수 없는 else를 사용

* 리스트 내포 + 조건부 표현식

 

for문 사용

* for문으로 사전 만들기

 

리스트 내포 사용

* 리스트 내포로 사전 만들기 

 

while문

* 조건이 참일 동안만 반복되는 while문

 

복합대입연산자

* a += 1은 a에 1을 더한 값을  a에 대입하는 복합대입연산자

 

무한루프

* 무한루프를 탈출하기 위한 break 문

 

예외처리

* try의 코드블록을 실행하고, 예외처리가 필요하면 except의 코드블록을 실행함

* try에서 에러가 발생하면 다음  try 구문은 실행하지 않고 바로 except로 넘어감

 

pass

* 애러발생 메시지 없이 정상적으로 프로그램을 동작시키고 싶으면  pass 사용

 

Exception 객체

* 예외발생 시 출력되는 애러메시지를 약어 e로 만듦 

 

예외처리가 안 된 경우

* 정수 이외의 것을 입력하면  애러가 출력됨

 

예외처리

* 예외처리를 통해 정상적으로 동작하는 것처럼 보이게 할 수 있음


# 함수, 가변인자, 키워드 인자 #

 

함수

* print문 안의 func를 불러와서 print하고 return 값이 없으므로 None을 return함

 

파라미터

* a와 b가 파라미터가 됨

*  1과 2가 각각 파라미터에 대입될 아규먼트

* funcAdd(1, 2)할 때의 괄호를 호출자라고 함

 

지역변수

* b는 지역변수로써 funcAdd()함수 내부에서만 사용

* 지역변수를 함수 밖에서 사용하려고 하면 정의되지 않았다는 애러 출력됨

 

글로벌 변수

* 로컬 변수가 글로벌 변수를 가림(shadowing)

* 글로벌 변수 a와 g는 함수 외부에서도 사용 가능 (함수 내부 a, 외부 a는 각각 지역변수와 글로벌 변수로써 무관)

* 글로벌 변수의 사용은 지양하는 것이 좋음

 

() 를 안 쓸 경우

* 함수를 호출할 때 ()를 쓰지 않으면 객체로 인식하여 주소를 출력

 

두 개의 변수 a와 b를 받아옴

* a와 b 둘 다 사용하고 싶으면 두 가지를 튜플로 받아오는 것(return add, max에서 ,(콤마)를 사용했기 때문에)

* 곱한 값만 사용하고 싶으면 b만 가져오면 됨

 

위치인자와 키워드 인자

* 위치인자는 순서대로 넣어줘야 제대로 출력됨

* 키워드 인자는 원소 각각의 이름을 기준으로 값을 넣어준 것이기 때문에 리스트의 원소 순서대로 정렬되어 출력

 

파라미터의 길이

* 파라미터의 길이와 인자의 길이가 다름

 

가변인자

* 가변인자를 받기 위해서 파라미터 앞에 *를 붙임

* 원소를 몇 개 넣어줄 것인지 사전에 정하지 않아도 됨

 

가변인자를 통해 합 구하기

* 인자의 개수가 다름에도 합을 구할 수 있음

 

키워드 인자

* 키워드 인자를 사용하여 사전타입으로 출력

 

 

함수호출 시 인자 언팩킹(unpacking)

 

 

 


# 클래스 #

클래스

* __init__은 생성자

* self는 객체 자기 자신을 가리킴 (반드시 self라고 할 필요는 없지만, 관례적으로 self를 사용)

* 생성자 __init__이 없는데 self를 쓰는 것은 객체지향적이지 않음


# 로또 번호 생성 #

 

 

import random 후

* random모듈의 randrange 메서드와  randint 메서드의 차이

* randrange는 마지막 숫자 10을 포함하지 않고, rantint는 마지막 숫자 10을 포함

 

choice메서드

* random.choice는 복원추출 가능

 

문자열 추출도 가능

* 리스트를 대상으로 choice메서드를 이용하면 문자열 추출도 가능


# Anaconda #

 

# conda cheat sheet를 통해 conda에 필요한 명령어 알 수 있음

 

# Conda basics

  - conda info : 콘다가 설치되었는지 확인하고 버전을 알려줌

  - conda update conda : 현재 버전으로 콘다를 업데이트

  - conda install PACKAGENAME : 아나콘다를 포함한 패키지 설치

  - spyder : 패키지 설치 후 실행, 예를 들어 패키지 중 스파이더 실행

  - conda update PACKAGENAME : 설치된 어떤 프로그램이라도 업데이트

  - COMMANDNAME --help : cli환경에서의 도움말

  - conda install --help        : cli환경에서의 도움말

 

# Using enviroments

  - conda create --name py35 python=3.5

  - 윈도우에서는 activate py35, 리눅스나 맥에서는 source activate py35 : 새로운 환경을 실행

  - conda env list : 나의 환경, 실행환경 전부를 확인

  - conda create --clone py35 --name py35-2 : 환경을 복사

  - conda list : 실행환경에 설치된 모든 패키지와 버전을 보여줌

  - conda list --revisions : 현재 환경까지의 모든 히스토리를 확인

  - conda install --revision 2 : 이전 버전으로 복귀

  - conda list --explicit > bio-env.txt : 환경을 텍스트 파일로 저장

  - conda env remove --name bio-env : 환경과 모든 것을 삭제

  - 윈도우에서 conda deactivate 맥과 리눅스에서는 source deactivate : 현재 환경을 종료

  - conda env create --file bio-env.txt : 텍스트 파일로 환경 만들기

  - conda create --name bio-nv biopython : 스택 명령어 : 새로운 환경을 만들고 그 환경의 이름을 bio-env로 하고 바이오파이썬 패키지를 설치

  - conda search PACKAGENAME : 패키지를 검색

 

# Installing and updating packages

  - conda install jupyter : 실행환경에 새로운 패키지(쥬피터 노트북)를 설치

  - jupyter-notebook : 설치된 패키지를 실행(쥬피터 노트북)

  - conda install --name bio-env toolz : 다른 환경(bio-env)에 새로운 패키지를 설치(toolz)

  - conda update scikit-learn : 현재 환경의 패키지를 업데이트

  - conda install --channel conda-forgeboltons : 구체적인 채널(conda-forge)에서 새로운 패키지(boltons)를 설치

  - pip install boltons : pip명령어를 통해 PyPi에서 현재 실행중인 환경에 직접 패키지를 설치

 - conda remove --name bio-env toolz boltons : 구체적인 환경(bio-env)에서 하나 이상의 패키지를 삭제(toolz, boltons)

 

# Managing multiple versions of Python

  - conda create --name py34 python=3.4 : 새로운 환경에 py34라는 이름을 가진 다른 버전의 파이썬을 설치

  - 윈도우에서는 activate py34, 리눅스나 맥에서는 source activate py34 : 다른 버전의 파이썬을 가진 환경으로 전환

  - 윈도우에서는 where python 리눅스나 맥에서는 which -a python : 현재 경로에 있는 모든 버전의 파이썬의 위치를 보여줌

  - python --version : 현재 실행 중인 파이썬의 버전 정보를 보여줌

'KOSA 클라우드 솔루션즈 아키텍트 양성과정' 카테고리의 다른 글

[5.13] Python 5일차  (0) 2022.05.13
[5.12] Python 4일차  (0) 2022.05.12
[5.10] Python 2일차  (0) 2022.05.10
[5.9] Python 1일차  (0) 2022.05.09
[5.6] 오픈스택-인스턴스 생성  (0) 2022.05.06