변수와 자료형(1)
AI시대 발맞춰 가기위해 Python
을 배워보기로 했다. 이전 회사에서 했던 실시간 수업 도구 프로젝트에서도 화이트보드에 AI를 접목시켜 사용자가 그린 그림과 비슷한 그림을 AI가 찾아주는 기능을 추가해 보려고 했는데 결국 못해보고 퇴사하게 되어서 아쉬웠던 참에 지인이 추천해준 국비 지원 학원을 통해 배워 보기로 했다.
이번에 또 한번 도약을 위한 과정을 적어 보기로 한다. 화이팅💪
오늘은 파이썬 변수 선언과 자료형에 대해 배웠다. C언어부터 자바, 자바스크립트를 배웠을 때와 다소 다른 방식으로 사용되는 파이썬의 특이한(내 기준) 부분을 포스팅 하겠다.
변수 선언
자바스크립트에서는 const
또는 let
이라는 키워드를 사용하여 변수를 선언하는데, 파이썬에서는 키워드 없이 변수를 선언하여 재선언, 재할당이 자유롭다.
😻 자바스크립트
const name = "roxie";
let age = 10;
age = 30;
🐍 파이썬
x = 10
print(x) # 10
x = "hello"
print(x) # hello (타입까지 바뀜)
x = [1, 2, 3]
print(x) # [1, 2, 3]
함수 안/밖에서 같은 이름을 쓰는 경우 함수 안에서 새로 x를 선언하면 전역 x를 덮어쓰지 않고 별도의 지역 변수가 된다. (스코프 차이)
x = 100 # 전역 변수
def foo():
x = 200 # 지역 변수 (전역과 별개)
print("inside:", x) # inside: 200
foo()
print("outside:", x) # outside: 100
❓파이썬은 키워드를 사용하지 않고 변수를 선언하는데 그럼 JS에서 사용하는 var
와 같은 동작을 할까?
정답 : No
JS에서 var
키워드를 지양하는 이유는 스코프와 호이스팅 때문에 const
또는 let
키워드를 사용하여 변수를 정의 하지만, 파이썬의 경우 블록을 무시하고 바깥에서도 접근 가능하다는 점에서 닮았지만 호이스팅 같은 문제는 없다.
print(a) # NameError: name 'a' is not defined
a = 5
1️⃣ 블록 스코프 차이
😻 자바스크립트
if (true) {
var x = 10;
}
console.log(x); // 10 ✅ 블록 밖에서도 접근됨 (var는 함수 스코프)
if (true) {
let y = 20;
}
console.log(y); // ❌ ReferenceError (블록 스코프)
🐍 파이썬
if True:
z = 30
print(z) # 30 ✅ 블록을 무시하고 접근 가능 (var처럼 보임)
2️⃣ 선언/할당 이전 접근
😻 자바스크립트
console.log(a); // undefined ⚠️ (호이스팅 때문에 선언만 위로 올라감)
var a = 5;
console.log(b); // ❌ ReferenceError (TDZ 때문에 선언 전 접근 불가)
let b = 10;
🐍 파이썬
print(c) # ❌ NameError (선언 전 접근 불가)
c = 15