본문 바로가기
Data Science/Boostcourse_coachingstudy

String and advanced function concept

by 루크 Luke 2022. 1. 17.
반응형

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으로 표현하면 된다.

escape(\) 글자

- 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개 중 무엇?

인덱스를 넣는 swap_offset, 리스트와 인덱스를 넣어주는 swap_reference가 바뀜

 

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 명령을 사용하면 됨

flake8은 찾아주는 기능, black은 고쳐주는 기능

 

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

댓글