C에서
for(int i=0;i이렇게 써있으면
int i할때 메모리가 할당되고
i=0 할때 메모리에 있는 값을 선언해주는거잖아
Python에서
for i in range(5) :
i += 1 이렇게 써있으면
for i 에서 메모리가 할당되는거임? 아니면
i+=1할때 메모리가 할당되는거임?
아 글고 생각해보니까 for문 들어가기전에 i=0을 먼저 만들어줘야하지않나?
C에서
for(int i=0;i이렇게 써있으면
int i할때 메모리가 할당되고
i=0 할때 메모리에 있는 값을 선언해주는거잖아
Python에서
for i in range(5) :
i += 1 이렇게 써있으면
for i 에서 메모리가 할당되는거임? 아니면
i+=1할때 메모리가 할당되는거임?
아 글고 생각해보니까 for문 들어가기전에 i=0을 먼저 만들어줘야하지않나?
이터레이터 검색 - dc App
iterator가 하나씩 빼게 해주는건 알겠는데, 저거랑 무슨 상관이있는거에여?
for 문법이 잘못됨 - dc App
아 그러넹 지금확인했음
참고로 파이썬은 C언어로 작성돼서 별 의미없는 비교다 - dc App
일단 값이 선언된다라고 표현하는게 아니라 값이 대입된다 또는 처음 대입이면 초기화된다라고 표현하는거고. 파이썬처럼 타입없는 언어는 선언(int a 같은거)도 없기 때문에 첫 갑툭튀 시점에 레퍼런스로서 메모리가 잡힌다고 생각하면 되고, 해당 레퍼런스에 뭔가 대입될때 그 대입되는 뭔가의 객체도 갑툭튀 순간 할당된거고 그 주소가 대입되는거라 보면 된다.
타입 없는 언어는 죄다 레퍼런스고 등장시점에 메모리 잡힌다고 보면 되고 레퍼런스는 주소만 갖는 놈이라고 봐도 무방하고 레퍼런스가 가리키는 주소에 있는 메모리는 별개다.
Range(5)가 리턴한게 i에 대입되는거자너
1. for i in ... 에서 i가 할당된다
2. i를 0으로 초기화할 필요가 없다. for a in b 의 역할은 b에서 원소를 하나씩 꺼내서 a에 대입하는 것이다. 즉 i = 0, i = 1, ..., i = 4 가 반복되는 것이다. 따라서 0으로 초기화하고 1씩 더할 필요가 없다