29.
task1 = [1, 4]
task2 = [1, 4]
task3 = task1
일때,
print(task1 == task2) # True
print(task1 is task2) # False
print(task3 == task1) # True
print(task3 is task1) # True
왜냐면 task1 과 task3는 같은 하나의 객체를 가르키고 있기 때문.
task1 ───→ [1, 4]
task3 ───↗
task2 ───→ [1, 4]
==는 값이 같은가를 물어보는 것이고
is는 같은 객체인가를 물어보는 것이다.
30.
질문:
def position(self) -> tuple[int, int]:
return (0, 0)
여기서 왜 tuple(int,int)가 아니라 tuple[int,int]인지
답:
()는 함수 호출 관련임.
그래서 tuple(int,int)는 인자에 int, int를 넣어서 tuple 라는 함수를 호출하겠다는 의미여서 안됨
왜 하필 []냐고 하면, 이건 Python 문법 설계에서 **"어떤 객체/타입에 구체적인 매개 정보를 붙인다"**는 표현으로 []를 사용하기로 정했기 때문입니다.
31. 컴프리핸션 문법으로 list, set, dict, tupple, generator 형태로 만들고 싶을때 표현법:
[number * number for number in numbers] # list
tuple(number * number for number in numbers) #tuple
{number for number in numbers} # set
{number: number * number for number in numbers} # dict
(number * number for number in numbers) # generator
32. 반복문 for는 ~에 대해, ~마다 의 뜻이어서
for x in y는 y에 있는 x마다(=에 대해) 반복하라 라는 뜻임.
33.
Python에서는
if 조건:
여기가 if 블록
for x in something:
여기가 for 블록
def 함수():
여기가 함수 블록
try:
여기가 try 블록
처럼 : 다음에 들여쓰기된 코드 묶음을 블록이라고 합니다.
34.try 안에서 return을 만나도 finally는 실행됩니다.
단, finally 안에도 return을 쓰면 원래 return 값을 덮어씀
def test():
try:
return 10
finally:
return 20
이 경우 결과는 20입니다.
그래서 보통 finally 안에는 return을 넣지 않고, 파일 닫기나 정리 작업 같은 것을 넣습니다.