L2 Variables

Python의 변수

  • 파이썬의 변수는 자유롭게 값을 변경하고, 타입에 상관없이 값을 부여하는 것이 가능합니다.
  • 이것이 가능한 이유는 파이썬은 임의의 위치에 값을 저장하고 변수에는 해당 위치만을 저장하기 때문입니다.
  • 그러나 이 방식은 사용자의 실수로 인해 코드 전체가 위험해지는 결과를 초래할 수 있습니다. 또한 속도가 매우 느립니다.

let vs var

  • let: immutable(바꿀 수 없는) 상수로 내부의 값을 바꿀 수 없습니다.
  • var: mutable (변동가능한) 변수로 값을 추후 변경할 수 있습니다.
fn func1(a: Int) -> Int:
	let b = 2 # let은 바꿀 수 없는 변수 선언
	var c = 2 # var는 바꿀 수 있는 변수 선언

	if a > 1:
		b = 2 * a 
		# error 
		# -> 바꿀 수 없는 변수를 바꾸려고 함
		
		c = 2 * a 
		# ok 
		# -> 바꿀 수 있는 변수를 바꿈
		return c

왜 만들었을까?

  • 예를 들어 우리가 우주 발사를 하는데, 지구의 둘레를 변수로 설정했다고 가정해보자. 파이썬에서는 해당 변수를 손쉽게 바꿀 수 있게 되는데, 그러면 모든 수식이 틀려질 염려가 있고 사람도 다칠 수 있다.
  • 그러므로, 이런 변동되면 안되는 상수들을 let을 사용하여주어 실수를 방지한다. 또한, 굳이 바꿀 필요가 없는 값을 let으로 지정해주어 속도를 향상시킨다.

Type Specifier

  • Mojo는 안정성과 속도를 위하여 변수의 타입을 지정하고 이를 변경하기 어렵게 만들었다.
  • 파이썬에서도 최근에는 type hint를 통해 하나의 변수에서 하나의 데이터 타입을 지정하도록 하였지만, 강제성이 없고, 속도의 향상을 불러오지 않는다.
  • Mojo에서는 타입을 지정하여 속도를 높이고, 타입이 변경되어 발생할 수 있는 다양한 문제를 최소화한다.
fn func2(a: Int) -> Int:
    var b: Int = 2
    var c: Float32 = 2.0
	
    if a > 1:
        b = a * c # error ->  Int와 Float32는 다른 타입이므로 할당 불가

        b = b * a # ok -> 같은 타입이므로 할당 가능
    return b

Copyright © 2023 Junseo Ko. 본 내용은 모두 제가 작성한 도큐먼트입니다. 무단 퍼가기와 재생산을 금지합니다. 문의: piglets.frizzle0v@icloud.com