# 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를 사용하지 않고, name_list의 길이 3을 이용해 반복문 3번 반복하는 방법
* zip() 내장함수를 통해 객체위치 확인
* zip() 내장 함수를 이용해 리스트로 만들 수도 있음
* zip() 내장 함수의 이터레이터를 활용해 곧 바로 출력
* 홍과 김을 개별적으로 리스트 안에 튜플 형식으로 담을 수 있음
* 문자열은 변경 불가능 함
* 상단의 반복문은 temp에 value * 2를 바인딩 후 바인딩한 값을 사전에 정의한 빈 리스트에 담아줌
* 하단의 반복문은 list comprehension으로 바로 result에 value * 2를 담을 수 있음
* 처음에는 result가 리스트였음
* result = tuple(result)로 인해 result가 tuple형식의 result를 바인딩함
* 리스트 내포문 뒤에 조건문을 덧붙일 수 있음
* 리스트 내포로 표현할 수 없는 else를 사용
* 리스트 내포 + 조건부 표현식
* for문으로 사전 만들기
* 리스트 내포로 사전 만들기
* 조건이 참일 동안만 반복되는 while문
* a += 1은 a에 1을 더한 값을 a에 대입하는 복합대입연산자
* 무한루프를 탈출하기 위한 break 문
* try의 코드블록을 실행하고, 예외처리가 필요하면 except의 코드블록을 실행함
* try에서 에러가 발생하면 다음 try 구문은 실행하지 않고 바로 except로 넘어감
* 애러발생 메시지 없이 정상적으로 프로그램을 동작시키고 싶으면 pass 사용
* 예외발생 시 출력되는 애러메시지를 약어 e로 만듦
* 정수 이외의 것을 입력하면 애러가 출력됨
* 예외처리를 통해 정상적으로 동작하는 것처럼 보이게 할 수 있음
# 함수, 가변인자, 키워드 인자 #
* print문 안의 func를 불러와서 print하고 return 값이 없으므로 None을 return함
* a와 b가 파라미터가 됨
* 1과 2가 각각 파라미터에 대입될 아규먼트
* funcAdd(1, 2)할 때의 괄호를 호출자라고 함
* b는 지역변수로써 funcAdd()함수 내부에서만 사용
* 지역변수를 함수 밖에서 사용하려고 하면 정의되지 않았다는 애러 출력됨
* 로컬 변수가 글로벌 변수를 가림(shadowing)
* 글로벌 변수 a와 g는 함수 외부에서도 사용 가능 (함수 내부 a, 외부 a는 각각 지역변수와 글로벌 변수로써 무관)
* 글로벌 변수의 사용은 지양하는 것이 좋음
* 함수를 호출할 때 ()를 쓰지 않으면 객체로 인식하여 주소를 출력
* a와 b 둘 다 사용하고 싶으면 두 가지를 튜플로 받아오는 것(return add, max에서 ,(콤마)를 사용했기 때문에)
* 곱한 값만 사용하고 싶으면 b만 가져오면 됨
* 위치인자는 순서대로 넣어줘야 제대로 출력됨
* 키워드 인자는 원소 각각의 이름을 기준으로 값을 넣어준 것이기 때문에 리스트의 원소 순서대로 정렬되어 출력
* 파라미터의 길이와 인자의 길이가 다름
* 가변인자를 받기 위해서 파라미터 앞에 *를 붙임
* 원소를 몇 개 넣어줄 것인지 사전에 정하지 않아도 됨
* 인자의 개수가 다름에도 합을 구할 수 있음
* 키워드 인자를 사용하여 사전타입으로 출력
# 클래스 #
* __init__은 생성자
* self는 객체 자기 자신을 가리킴 (반드시 self라고 할 필요는 없지만, 관례적으로 self를 사용)
* 생성자 __init__이 없는데 self를 쓰는 것은 객체지향적이지 않음
# 로또 번호 생성 #
* random모듈의 randrange 메서드와 randint 메서드의 차이
* randrange는 마지막 숫자 10을 포함하지 않고, rantint는 마지막 숫자 10을 포함
* 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 |