이것이 가능한 이유는 파이썬은 임의의 위치에 값을 저장하고 변수에는 해당 위치만을 저장하기 때문입니다.
그러나 이 방식은 사용자의 실수로 인해 코드 전체가 위험해지는 결과를 초래할 수 있습니다. 또한 속도가 매우 느립니다.
let vs var
let: immutable(바꿀 수 없는) 상수로 내부의 값을 바꿀 수 없습니다.
var: mutable (변동가능한) 변수로 값을 추후 변경할 수 있습니다.
fnfunc1(a:Int)->Int:letb=2# let은 바꿀 수 없는 변수 선언
varc=2# var는 바꿀 수 있는 변수 선언
ifa>1:b=2*a# error
# -> 바꿀 수 없는 변수를 바꾸려고 함
c=2*a# ok
# -> 바꿀 수 있는 변수를 바꿈
returnc
왜 만들었을까?
예를 들어 우리가 우주 발사를 하는데, 지구의 둘레를 변수로 설정했다고 가정해보자. 파이썬에서는 해당 변수를 손쉽게 바꿀 수 있게 되는데, 그러면 모든 수식이 틀려질 염려가 있고 사람도 다칠 수 있다.
그러므로, 이런 변동되면 안되는 상수들을 let을 사용하여주어 실수를 방지한다. 또한, 굳이 바꿀 필요가 없는 값을 let으로 지정해주어 속도를 향상시킨다.
Type Specifier
Mojo는 안정성과 속도를 위하여 변수의 타입을 지정하고 이를 변경하기 어렵게 만들었다.
파이썬에서도 최근에는 type hint를 통해 하나의 변수에서 하나의 데이터 타입을 지정하도록 하였지만, 강제성이 없고, 속도의 향상을 불러오지 않는다.
Mojo에서는 타입을 지정하여 속도를 높이고, 타입이 변경되어 발생할 수 있는 다양한 문제를 최소화한다.
fnfunc2(a:Int)->Int:varb:Int=2varc:Float32=2.0ifa>1:b=a*c# error -> Int와 Float32는 다른 타입이므로 할당 불가
b=b*a# ok -> 같은 타입이므로 할당 가능
returnb