Python3.6부터, format대신 f-strings기능을 쓸 수 있다.
x,z,y = 1,2,3 #튜플의 언패킹
print(f'number is {x},{y},{z}.')
name = banana
price = 20
print(f'{name} is {price}$')
로 쓸 수 있다.
값을 전달할 때 숫자나 문자는 값을 전달하는 수치전달이지만,
리스트와 사전형은 주소를 전달하는 참조전달이다.
그래서 아래와 같은 상황이 일어날 수 있다.
list1 = [1,2,3,4,5]
list2 = list1
list[0] = 100
print(list1)
print(list2)
#결과
[100, 2, 3, 4, 5]
[100, 2, 3, 4, 5]
이와 같이 list2 = list1
이라는 코드에서는 list1의 값을 넘겨주는 것이 아니라,
주소값을 넘겨주기 때문에, list1만 바꾸어도 같은 주소값을 쓰는 list2도 함께 바뀌는 것이다.
이를 해결하기 위해서는 위의 코드를 list2 = list1.copy()
로 수정하면 된다.
변수의 주소를 확인할 때는 id(list1)
으로 확인할 수 있다.
숫자의 경우는 False는 0이, True는 0이 아닌 수이다.
문자의 경우는 False는 ''이고, True는 ''외의 모든 문자.
리스트, 사전의 경우에도 값이 없는 경우는 False이고, 값이 있는 경우는 True이다.
아래와 같은 코드를 변형하여 확인해보자.
is_ok = ''
#False -> 0, 0.0, '', [], (), {}, set()
if is_ok:
print("This is True!")
else:
print("This is False!")
None을 판정할 때는 is를 많이 쓰는데,
주의해야할 점은 is는 값을 비교하는게 아니라, 오브젝트끼리를 비교한다는 점이다.
is는 주로 None을 판정할 때 쓰고, 값을 비교할 때는 ==을 쓰도록 하자.
is_empty = None
if is_empty is None:
print("This is None!")
a = None
print( 1 == True ) #True -> ==는 값을 비교한다.
print( 1 is True ) #False -> is는 오브젝트끼리 비교한다.
while문에서 else는
while문에 break가 없을 때, else문을 실행하고 프로그램을 종료하라는 뜻이다.
만약 while문안에 있는 break를 실행하게 된다면,
그것은 while문을 완전히 나오라는 뜻이므로 else문도 실행하지않고 종료된다.
count = 0
while count < 5:
print(count)
count += 1
else:
print("done")