args
: 정해지지 않은 수의 (일반) 피라미터를 받음, *argskwargs
: 정해지지 않은 수의 키워드파라미터를 받음, **kwargsdir()
: 함수에 대한 명령어의 목록을 얻을 수 있는 함수상속과 관련된 개념
메소드 결정 순서
파이썬은 기본적으로 다중 상속을 지원하는데 부모 클래스들이 똑같은 이름의 메소드를 가지고 있다면 죽음의 다이아몬드(the Deadly Diamond of Death) 문제가 발생
= 하나의 구문이 두가지 이상의 의미로 해석될 때 발생하는 문제
MRO는 자식과 부모 클래스를 전부 포함하여 메소드의 실행 순서를 지정하는 것
__mro__
로 확인 가능 , 튜플 형식, 먼저 출력된 값일수록 우선순위가 높음
issubclass(자식클래스, 부모클래스)
issubclass(int,int) # True
issubclass(int, float #False
isinstance(1,int) # 1이 int인지 아닌지 -> True
isinstance("hi", int) # False
str : 입력받은 객체의 문자열 버전을 반환하는 함수
__ : 해당하는 자료형에 대한 연산을 정의하는 메소드들 앞뒤에 double underscore
어떤 객체의 '출력될 수 있는 표현' 을 문자열의 형태로 반환
repr(3) # '3'
repr([1,2,3]) # '[1,2,3]'
import math
repr(math) # "<module 'math' from ...>"
__str__
: 태생적인 목적 자체가 인자를 '문자열화' 해 반환하는 것, 서로 다른 자료형 간에 인터페이스를 제공하기 위해서 존재__repr__
: 객체를 인간이 이해할 수 있는 평문으로 '표현'하는 것df = pd.dataframe([['Jay',16,'BBA'],
['Jack',19,'BTech'],
['Mark',18,'BSc']],
columns = ['Name','Age','Course'])
df.to_json(orient = '')
# orient = 'columns'
{"Name":{"0":"Jay","1":"Jack","2":"Mark"},
"Age":{"0":16,"1":19,"2":18},
"Course":{"0":"BBA","1":"BTech","2":"BSc"}}
# orient = 'records'
[{"Name":"Jay","Age":16,"Course":"BBA"},{"Name":"Jack","Age":19,"Course":"BTech"},{"Name":"Mark","Age":18,"Course":"BSc"}]
# orient = 'index'
{"0":{"Name":"Jay","Age":16,"Course":"BBA"},
"1":{"Name":"Jack","Age":19,"Course":"BTech"},
"2":{"Name":"Mark","Age":18,"Course":"BSc"}}
# orient = 'split'
{"columns":["Name","Age","Course"],
"index":[0,1,2],
"data":[["Jay",16,"BBA"],["Jack",19,"BTech"],["Mark",18,"BSc"]]}
# orient = 'table'
{"schema": {"fields":[{"name":"index","type":"integer"},{"name":"Name","type":"string"},{"name":"Age","type":"integer"},{"name":"Course","type":"string"}],"primaryKey":["index"],"pandas_version":"0.20.0"}, "data": [{"index":0,"Name":"Jay","Age":16,"Course":"BBA"},{"index":1,"Name":"Jack","Age":19,"Course":"BTech"},{"index":2,"Name":"Mark","Age":18,"Course":"BSc"}]}
r
: 읽기 모드
w
: 쓰기 모드, 파일이 이미 동일한 이름으로 존재하면 덮어씀
a
: 추가 모드, 존재하는 파일에 추가할 때, 파일이 없다면 생성함
with open("file_name.json", "r") as file:
for i in file:
print(i)
with open("file_name.json", 'w') as file:
file.write("anything you want to write on file")
file.writerow("write in row")
with open("file_name.json", 'a') as file:
file.write("anything you want to add on file")
writer.writeheader()
: 파일의 첫번째 행에 항목의 이름들을 넣어주는 것
writerows()
: 데이터 전체를 한번에 작성
writerow()
: 한 줄씩 넣는 방법
data = [{"key","values"}]
with open("file.csv","w") as file:
writer = csv.DictWriter(file, fieldnames=["here is name of data's key"])
writer.writeheader()
writer.writerows(data)
# or
for row in data:
writer.writerow(row)