python -m module [arg] ... 로 실행.
-> 마치 모듈 소스 파일의 경로명을 명령행에 입력한 것처럼 실행하게 된다.
기본적으로, 파이썬 소스 파일들은 utf-8 으로 인코드 된 것으로 취급됨.
-> 인코딩을 기본값 외의 것으로 선언하려면, 파일의 첫 줄에 특별한 형태의 주석 문을 추가해야 한다.
-> -- coding: encoding -- (파이썬이 지원하는 코덱 중 하나여야 함)
cf) 한가지 예외가 존재함
-> 소스 코드가 유닉스 (shebang) 줄로 시작하는 경우. (Ex. # !/usr/bin/env python3)
이 경우에, 인코딩 선언은 두번쨰 줄에 들어감. (# -- coding: cp1252 --)
‘/‘ -> 고전적인 나눗셈
‘//‘ -> 정수 나눗셈은 소수를 버린다
‘%’ -> 연산자는 나눗셈의 나머지를 돌려준다.
문자열을 사용할 때 더블쿼트, 싱클쿼트의 사용법을 알면 좋다.
‘“Yes,”, they said.’
-> 바깥에는 기본적으로 싱글 쿼트를 사용하되, 안쪽에는 더블쿼트를 사용
문자열 리터널은 여러 줄로 확장될 수 있다.
-> 한가지 방법은 삼중 따옴표를 사용하는 것
“””….”””
‘’’…’’’
이와 같은 줄 넘김 문자는 자동으로 문자열에 포함된다. (중요)
문자열 에서의 인덱싱 및 슬라이싱 개념
인덱싱이 개별 문자을 얻는데 사용되는 반면, 슬라이싱은 부분 문자열을 얻는 데 사용된다.
슬라이스가 동작하는 방법을 기억하는 한 가지 방법은 인덱스가 문자들 사이의 위치를 가리킨다고 생각하는 것입니다.

문자열은 불변이어서 할당 프로세스를 진행하지 못하지만 리스트는 가변이기에 가능하다.
즉, 내용을 변경할 수 있다는 것이다.
Python 에서 단순 할당은 데이터를 복사하지 않는다. 변수에 목록을 할당할 때 해당 변수는 기존 목록을 참조합니다.
한 변수를 통해 목록에 가한 모든 변경 사항은 해당 목록을 참조하는 모든 다른 변수를 통해 반영됩니다.
반면에 모든 슬라이스 연산은 요청한 항목들을 포함하는 새 리스트를 돌려줍니다.
이는 슬라이스 된 결과는 리스트의 새로운 얕은 복사복은 돌려준다는 뜻입니다.
얕은 복사와 깊은 복사의 차이점
-> 해당 차이점은 리스트 또는 클래스 인스턴스들과 같은 다른 객체를 포함함 객체에만 유효합니다.
깊게 들어가기
1. 얕은 복사
1. 새로운 객체를 만들지만, 그 안에 담기는 원소(참조)는 원본과 동일합니다.
2. 즉, 껍데기만 새로 만들고 내부 객체는 그대로 참조하는 방식입니다.
3. copy.copy(obj) 또는 자료형별 기본 메서드(list[:], dict.copy() 등)로 생성
특징:
- 1차원 데이터는 완전히 복사된 것으로 보임
- 하지만 내부에 또 다른 가변 객체가 있으면 원본과 복사본이 그 가변 객체를 공유함
- 내부 객체 변경 시 원본과 복사본 모두 영향을 받음
import copy
a = [[1,2], [3,4]]
b = copy.copy(a)
b[0][0] = 999
print(b) = [[999, 2], [3,4]]
print(a) = [[999, 2], [3,4]]
