밀러와 라넘의 알고리즘과 데이터 구조에 대한 책은 Python을 사용하여 읽었습니다. 그들은 다음 예를 사용합니다파이썬의 변수 재 할당 - 온톨로지 쿼리 - Newton 메서드 사용
def squareroot(n):
root = n/2
for k in range(20):
root = (1/2)*(root + n/root)
return root
내 질문은, 변수 '루트'는 대한 루프 내에 재 할당되고있다
그래서 할당의 오른쪽에있는 표현에서 '루트'의 값 반복 각각 운영자 변경. 어떻게 이것이 가능한지 잘 모르겠습니다.
함수 호출이 끝나면 for-loop 외부의 'root'변수 (2 행의 값)는 for 루프의 표현식에서 'root'변수에 의해 참조되는 값으로 평가됩니다 블록을 사용하여 표현식이 for 루프 블록에서 할당 연산자의 왼쪽에있는 변수 'root'에 다시 할당되는 단일 값으로 평가되도록합니다. 다음 반복의 시작에서 '루트'는 더 이상 n/2가 아니지만 for 루프의 표현식이 평가 한 값이 무엇이든간에. 이 경우, 'root'변수는 float 값으로 재 할당되었으므로 더 이상 원래 정의 된 것이 아니며 'root'변수를 사용하는 표현식입니다.
예를 들어 squareroot (9) 함수 호출을 사용하면 for 루프의 표현식이 해당 값으로 계산되기 때문에 'root'는 첫 번째 반복 이후 3.25의 값을 유지합니다. for-loop의 변수 'root'가 단일 부동 소수점 값으로 재 할당되면 원래 '루트'를 정의한 표현식이 삭제됩니다. 'root'는 이후 3.25로 재정의되었습니다. for-loop에서 'root'는 더 이상 표현식을 나타내지 않고 단일 부동 소수점 값을 나타냅니다. 그러나이 예제에서 for 루프의 'root'변수에는 각 반복 다음에 두 가지 의미가 있습니다. 이는 float 값과 expression 둘 다입니다. 나는 그것이 어떻게 될 수 있는지 이해하지 못한다.
당신이 이해하고 있듯이, 변수 "float 값"과 "표현식"사이의 차이점은 무엇입니까? – mwchase
변수는 절대로 "표현식을 참조하십시오". 그들은 그 표현을 평가하는 * value *를 참조합니다. 예를 들어,'root = n/2'가 실행될 때,'root'는'n'이 그때 가지고있는 값의 절반이되는 특정한 숫자 값을 가지고 있습니다; 'n' 값과의 지속적인 연결은 없습니다. – jasonharper