
❗️ 계속해서 업데이트 될 예정...
C 언어에서의 구조체# 구조체 사용안함
int scoreKOR[10];
int scoreMAT[10];
int scoreENG[10];
int scoreSCI[10];
# 구조체 사용함
struct score
{
int scoreKOR
int scoreMAT
int scoreENG
int scoreSCI
}
void main()
{
struct score s;
}
>>>
s.scoreKOR = 100;
s.scoreMAT = 100;
s.scoreENG = 80;
s.scoreSCI = 50;
Python에서의 구조체@dataclass
class score:
scoreKOR: int = None
scoreMAT: int = None
scoreENG: int = None
scoreSCI: int = None
s = Product()
s.scoreKOR = 100
s.scoreMAT = 100
s.scoreENG = 80
s.scoreSCI = 50
C와 Java에서 원시 타입C와 Java에서 제공하는 타입short, long, float, double, int 등이 있음C와 Java는 성능에 대한 우선순위가 높기 때문에 이러한 타입이 존재Python에서의 원시 타입# bad
valueName: int = 1
class casename:
pass
# good
value_name: int = 1
class CaseName:
pass
rangeimport sys
a = [i for i in range(10000000)]
b = range(10000000)
print(len(a), len(b))
>>> 10000000 10000000
print(sys.getsizeof(a), sys.getsizeof(b))
>>> 81528056 48
print(b[1999])
>>> 1999
[], {} 사용하는 것을 지양해야 함__defaults__라는 매직 메서드에 저장됨__defaults__에 기록된 기본 값이 계속 업데이트가 됨# bad
def add_5_in_list(ls = []):
ls.append(5)
return ls
print(add_5_in_list.__defaults__)
add_5_in_list() # ([5],)
add_5_in_list() # ([5, 5],)
add_5_in_list() # ([5, 5, 5],)
print(add_5_in_list.__defaults__)
>>> ([],)
>>> ([5, 5, 5],)
# good => 불변 객체 사용
def add_5_in_list(ls = None):
if ls is None:
ls = []
ls.append(5)
return ls
print(add_5_in_list.__defaults__)
add_5_in_list() # ([5],)
add_5_in_list() # ([5],)
add_5_in_list() # ([5],)
print(add_5_in_list.__defaults__)
>>> ([],)
>>> ([],)
True와 False를 판별 할 때는 암시적인 방법과 명시적인 방법을 잘 활용해야 한다.# bad
if foo != []:
foo.append(5)
# good
if foo:
foo.append(5)
# bad
if not foo:
foo += 10
# good
if foo == 0:
foo += 10
파이썬다운 방식
" 문제를 풀어낼 때는 바람직하고 유일하며 명확한 방법이 존재할 것이다. "

int만 제공int가 충분하지 않다면 자동으로 long으로 바꿔줌bool은 논리 자료형인데 파이썬 내부에서는 1(True와 0(False)로 처리되는 int의 서브 클래스임object class > int class > bool classa = b = 10
a += 1
print(a, b)
>>> 11 10
a = b = [1,2,3,4]
a[1] = 10
print(a, b)
>>> [1, 10, 3, 4] [1, 10, 3, 4]


O(1)sys 모듈mx = -sys.maxsize
mn = sys.maxsize
float()mx = float('-inf')
mn = float('inf')