코드
num_1 = 123 num_2 = num_1 # 改变num_2值前 print 'num_1 = {0}, num_2 = {1}'.format(num_1, num_2) num_2 = 0 # 改变num_2值后 print 'num_1 = {0}, num_2 = {1}'.format(num_1, num_2)
출력
num_1 = 123, num_2 = 123 num_1 = 123, num_2 = 0
결론
숫자 변수는 값으로 전달됩니다.
코드
str_1 = 'hello python' str_2 = str_1 # 改变str_2值前 print 'str_1 = {0}, str_2 = {1}'.format(str_1, str_2) str_2 = 'hello' # 改变str_2值后 print 'str_1 = {0}, str_2 = {1}'.format(str_1, str_2)
출력
str_1 = hello python, str_2 = hello python str_1 = hello python, str_2 = hello
결론
문자열 변수도 값으로 전달됩니다.
코드
l_1 = [1, 2, 3, 4] l_2 = l_1 print 'l_1 = {0}, l_2 = {1}'.format(l_1, l_2) l_2[0] = 100 # 改变l_2的第一个元素 print 'l_1 = {0}, l_2 = {1}'.format(l_1, l_2) l_2 = [1,1,1] # 改变l_2的全部元素 print 'l_1 = {0}, l_2 = {1}'.format(l_1, l_2)
출력
l_1 = [1, 2, 3, 4], l_2 = [1, 2, 3, 4] l_1 = [100, 2, 3, 4], l_2 = [100, 2, 3, 4] l_1 = [100, 2, 3, 4], l_2 = [1, 1, 1]
결론
위 출력에서 볼 수 있듯이 l_1과 l_2의 함수는 c/C++의 포인터와 유사하며, 함수 of l_2 = l_1 l_2와 l_1이 같은 메모리를 가리키는 것과 동일하며, 내용은 [1, 2, 3, 4]이다. l_2[0] = 100이면 l_1의 첫 번째 요소도 변경됩니다. l_2 = [1,1,1]은 l_2가 다른 메모리 조각을 가리키도록 하며 이는 l_1의 내용에 영향을 주지 않습니다.
코드
d_1 = {'a': 1, 'b': 2, 'c': 3} d_2 = d_1 print 'd_1 = {0}, d_2 = {1}'.format(d_1, d_2) d_2['c'] = 10 print 'd_1 = {0}, d_2 = {1}'.format(d_1, d_2) d_2 = {'e': 12, 'f': 15} print 'd_1 = {0}, d_2 = {1}'.format(d_1, d_2)
출력
d_1 = {'a': 1, 'c': 3, 'b': 2}, d_2 = {'a': 1, 'c': 3, 'b': 2} d_1 = {'a': 1, 'c': 10, 'b': 2}, d_2 = {'a': 1, 'c': 10, 'b': 2} d_1 = {'a': 1, 'c': 10, 'b': 2}, d_2 = {'e': 12, 'f': 15}
결론
출력 결과는 dict와 list가 동일한 속성을 가지고 있음을 보여줍니다. 직접 할당은 참조를 전달하는 것과 유사합니다. C++ .
코드
class Point: def init(self, x, y): self.x = x self.y = y def str(self): return ''.join(['x = ', str(self.x), ' ', 'y = ', str(self.y)]) p_1 = Point(12,34) p_2 = p_1 print 'p_1: {0}; p_2: {1}'.format(p_1, p_2) p_2.x = 122 print 'p_1: {0}; p_2: {1}'.format(p_1, p_2) p_2 = Point(89, 978) print 'p_1: {0}; p_2: {1}'.format(p_1, p_2)
출력
p_1: x = 12 y = 34; p_2: x = 12 y = 34 p_1: x = 122 y = 34; p_2: x = 122 y = 34 p_1: x = 122 y = 34; p_2: x = 89 y = 978
결론
사용자 지정 개체도 할당 프로세스 중에 참조로 전달됩니다.
Python에서는 할당 프로세스 중에 숫자 값과 문자열이 값으로 전달되며, 할당 프로세스 중에 목록, 사전 및 개체는 기본적으로 참조로 전달됩니다. 값을 전달해야 하는 경우 copy 모듈에서 copy 및 deepcopy 기능을 사용할 수 있습니다.
위 내용은 Python 변수 전달에 대한 자세한 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!