String
- 문자열 데이터
- 시퀀스 자료형으로, 문자형 데이터를 메모리에 저장
- 영문자 한 글자는 1byte의 메모리 공간을 사용
- 1byte = 8bit = 2**8 = 256까지 저장 가능
- bit는 0 또는 1
- 컴퓨터는 문자를 직접적으로 인식하지는 않고, 모든 데이터를 2진수로 인식함
- 이를 위해서 2진수를 문자로 변환하는 표준 규칙을 정함
- Ex) 대문자 U는 이진수로 1000011로 변환됨 (UTF-8기준)
- 아스키 코드 표준(ASCII)를 많이 씀
- 메모리 공간
- 정수형 : int(4byte), long(무제한)
- 실수형 : float(8byte)
- 인덱싱(Indexing)
- 문자열의 각 문자는 개별 주소를 가짐 -> 이 주소를 가지고 할당된 값을 가져옴
- 슬라이싱(Slicing)
- 문자열의 주소값을 기반으로 문자열의 부분값을 반환
- in 명령을 통해 포함 여부를 확인할 수 있음
- len(a), a.upper(), a.lower(), a.capitalize(), a.title(), a.count('abc'), a.find('abc'), a.rfind('abc'),
- a.startswith('abc'), a.endswith('abc'), a.strip(), a.rstrip(), a.lstrip(), a.split(), a.split('abc'),
- a.isdigit(), a.islower(), a.isupper()
- 문자열 선언은 큰 따옴표나 작은 따옴표를 사용
- '를 표현하고 싶으면, \'으로 표현하면 됨 (역슬래시_escape 문자)
- 두 줄 이상을 저장하고 싶으면 """~""" 등으로 큰따옴표 3개를 적어주면 됨
- 엔터를 \n으로 표현하면 된다.
- raw string : 문자열 앞에 r을 적어주면, escape을 무시하고 그대로 출력함 Ex)
- f = open(파일 경로, 'r') : 경로에 있는 파일을 r(read)하라는 명령
- line = f.readline() : readline은 한 줄씩 읽어오라는 명령
- line.strip() : line 문자열에서 공백을 제거하라는 명령
- f.close() : 열어둔 파일 닫으라는 명령
- yesterday_lyric.upper() : 모두 대문자로 바꾸라는 명령
- yesterday_lyric.upper().count('YESTERDAY") : 대문자로 바뀐 문자열에 YESTERDAY가 몇 개 있는지 카운트하라는 명령
Call by object reference
- 함수에서 parameter를 전달하는 방식
1) 값에 의한 호출 (Call by Value) : 함수에 인자를 넘길 때 값만 넘김
2) 참조에 의한 호출 (Call by Reference) : 함수에 인자를 넘길 때 메모리 주소를 넘김
3) 객체 참조에 의한 호출 (Call by Object Reference) : 파이썬의 방식, 객체의 주소가 함수로 전달되는 방식
- Swap : 함수를 통해 변수 간의 값을 교환(Swap)하는 함수
- 예제 : ex = [1, 2, 3, 4, 5]일 때, ex가 바뀌는 경우는 3개 중 무엇?
Scoping Rule : 변수의 범위 조건
- 지역 변수(local)와 전역 변수(global) : 함수 내에서만 사용하는 것이 local, 전체에서 사용하는 것이 global
- 전역 변수는 함수에서 사용 가능, 하지만 함수 내에서 같은 이름의 변수를 쓰면 새로운 지역 변수가 되는 것
- 함수 내에서 전역 변수를 사용하고 싶다면, global 키워드를 사용하면 된다.(함수 안에서 global 선언)
Recursive Function : 재귀함수
- 자기 자신을 호출하는 함수
- 점화식과 같은 재귀적 수학 모형을 표현할 때 사용
- 재귀 종료 조건 존재, 종료 조건까지 함수 호출 반복
Function Type hints
- 파이썬의 가장 큰 특징 - Dynamic typing
- 처음 함수를 사용하는 사용자가 interface를 알기 어렵다는 단점이 있음
- 매개변수 : 타입 형태로 해줌
- 사용자에게 인터페이스를 명확히 알려줄 수 있음
- 함수의 문서화시 파라미터에 대한 정보를 명확화할 수 있음
- mypy, IDE, linter 등을 통해 코드의 발생가능한 오류를 사전에 확인 가능
- 시스템 전체적인 안정성 확보 가능
Docstring
- 파이썬 함수에 대한 상세 스펙을 사전에 작성 -> 함수 사용자의 이행도 UP
- 세 개의 따옴표로 docstring 영역 표시(함수명 아래)
- docstring을 쓰는 방법으로 vscode의 docstring Generator 추천
함수 작성 가이드라인
- 함수는 가능하면 짧게 작성할 것
- 함수 이름에 함수의 역할, 의도가 명확히 들어낼 것
- 하나의 함수에는 유사한 역할을 하는 코드만 포함
- 인자로 받은 값 자체는 바꾸지 말 것
- 함수는
1) 공통적으로 사용되는 코드에 만들어주고,
2) 복잡한 수식을 식별 가능한 이름으로 만들어주고,
3) 복잡한 조건을 식별 가능한 이름으로 만들어줄 때 정의하면 좋다.
코딩 컨벤션
- 명확한 규칙은 없음
- 때로는 팀마다, 프로젝트마다 다르다.
- 중요한 건 일관성이고, 읽기 좋은 코드가 좋은 코드이다.
- 들여쓰기는 Tab, 4 Space 지향인데, 최근에는 4 Space 권장
- 쓰더라도 혼합해서 쓰지말고 하나만 일관되게 활용
- 한 줄은 79자까지만
- 불필요한 공백은 피함
- =연산자는 1칸 이상 띄우지 않는다.
- 주석은 항상 갱신, 불필요한 주석은 삭제
- 코드 마지막에는 항상 한 줄 추가
- 소문자l(엘), 대문자O(오), 대문자I(아이) 금지 - 헷갈리니까
- 함수명은 소문자 구성, 필요하면 밑줄로 나눔
- flake8 모듈로 체크 : conda install -c anaconda flake8
- 해당 모듈로 코딩 컨벤션 잘 지켰는지 확인 가능
- 최근에는 black 모듈을 사용해서 pep8 like 수준을 준수
- black codename.py 명령을 사용하면 됨
Reference
'Data Science > Boostcourse_coachingstudy' 카테고리의 다른 글
Pythonic code (0) | 2022.01.24 |
---|---|
Python Data Structure (0) | 2022.01.17 |
Conditionals and Loops (0) | 2022.01.14 |
Function and Console I/O (0) | 2022.01.14 |
Variable & List (0) | 2022.01.14 |
댓글