python 변수 할당 방법(가 변 및 가 변 하지 않 음)
3858 단어 python변량값 을 부여 하 다
1.가 변 대상 과 불가 변 대상
Python 이 힙 에서 분배 하 는 대상 은 두 가지 로 나 뉜 다.가 변 대상 과 가 변 대상 이다.가 변 대상 이란 대상 의 내용 이 가 변 적 이지 않 고 가 변 적 이지 않 은 대상 은 대상 의 내용 이 가 변 적 이지 않다 는 것 을 말한다.
가 변 적 이지 않 음(immutable):int,문자열(string),float,(수치 형 number),모듈(tuple)
가 변(mutable):사전 형(dictionary),목록 형(list)
가 변 하지 않 는 유형 특징:
아래 의 예 를 보 세 요(예 1)
i = 73
i += 2
위의 그림 에서 알 수 있 듯 이 변 하지 않 는 대상 의 특징 은 변 하지 않 았 고 변 한 것 은 새로운 대상 을 만 들 었 을 뿐 변수의 대상 인용 을 바 꾸 었 다.
예 를 하나 보다(예 2)
>>>x = 1
>>>y = 1
>>>z = 1
>>> x is y
True
>>>y is z
True
위 에서 보 듯 이 정 수 는 가 변 적 이지 않 기 때문에 x,y,z 는 메모리 에서 모두 1 의 메모리 주 소 를 가리 키 고 있다.즉,x,y,z 는 모두 같은 주 소 를 가리 키 고 있 기 때문에 주의해 야 할 것 은 성형 에 있어 서 현재 지원(-1,100)만 하고 있다 는 것 이다.가 변 적 이지 않 은 대상 의 장단 점 을 정리 하 다.
중복 되 는 값 이 메모리 공간 에 대한 점용 을 줄 일 수 있다 는 장점 이 있다.
단점 은 예 1 에서 보 듯 이 이 변수 가 연 결 된 값 을 수정 하려 고 합 니 다.만약 에 메모리 에 이 값 이 존재 하 는 메모리 블록 이 없다 면 메모 리 를 다시 열 어 새 주소 와 변수 이름 을 연결 해 야 합 니 다.변수 가 원래 가리 키 는 메모리 블록 의 값 을 수정 하 는 것 이 아니 라 실행 효율 에 어느 정도 떨 어 집 니 다.
다음은 가 변 대상 의 예(예 3)를 보 겠 습 니 다.
m=[5,9]
m+=[6]
2.함수 매개 변수:
Python 함수 매개 변 수 는 가 변 대상 에 대해 함수 내 에서 매개 변수 에 대한 변 화 는 원시 대상 에 영향 을 줄 수 있 습 니 다.가 변 하지 않 는 대상 에 대해 함수 내 에서 매개 변수 에 대한 변 화 는 원시 매개 변수 에 영향 을 주지 않 습 니 다.원인 은:
1.가 변 대상,매개 변 수 는 가 변 대상 이 고 그 내용 은 수정 할 수 있 습 니 다.
2.가 변 하지 않 는 대상 은 함수 내 변수의 지향 대상 을 바 꿉 니 다.
예 를 들 어 두 개의 목록 a 와 b 가 존재 합 니 다.
a=b 라면 a 와 b 의 주 소 는 같 습 니 다.복사 만 하려 면 a=b[:]를 사용 해 야 합 니 다.
def mutable(b = []): #
b.append(0)
return b
>>>mutable()
[0]
>>>mutable()
[0,0]
>>>mutable()
[0,0,0]
여기 서 세 번 연속 으로 결 성 된 값 으로 함수 3 을 실행 합 니 다.매번 결과 가 다 릅 니 다.우리 의 생각 에 따 르 면 세 번 의 결 과 는 똑 같 을 것 입 니 다.모두[0]입 니 다.하지만...그 이 유 는 무엇 입 니까?앞에서 말 했 듯 이 모든 것 이 대상 이 고 함수 mutable 도 하나의 대상 입 니 다.dir()를 사용 하여 함수 의 속성 을 봅 니 다.
dir(mutable)
['__annotations__', '__call__', '__class__', '__closure__', '__code__', '__defaults__', '__delattr__', '__dict__', '__doc__', '__eq__', '__format__', '__ge__', '__get__', '__getattribute__', '__globals__', '__gt__', '__hash__', '__init__', '__kwdefaults__', '__le__', '__lt__', '__module__', '__name__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__',
위 에서 우 리 는 mutable 이라는 함 수 를 세 번 실 행 했 습 니 다.만약 mutable.defaults__함수 대상 의 기본 매개 변수 변 화 를 보면 문제 가 발생 합 니 다.
>>>mutable.__defaults__
([],)
>>>mutable()
[0]
>>>mutable.__defaults__
([0],)
>>>mutable()
[0,0]
>>>mutable.__defaults__
([0,0],)
자세히 살 펴 보면 클래스 대상 내부 속성 dict 에서'x'에 대응 하 는 값 은 대상 을 만 들 때마다 변화 가 생 겼 습 니 다.즉,클래스 대상 을 만 들 때마다 변수 x 참조 메모리 의 초기 값 이 다 릅 니 다.이것 은 목록(list)의 가 변성 으로 인 한 것 입 니 다.대상 을 만 들 때마다 목록 의 가 변성,함수 대상 b 의 dict 속성 에서 x 키 에 대응 하 는 값 이 다시 만 드 는 것 이 아니 라 바 뀌 어서 위의 결과 가 나 왔 습 니 다.요약:초보 자가 python 의 변수 와 유형,매개 변수 전달 방식 을 충분히 이해 하지 못 하거나 모든 해석 대상 의 원 리 를 충분히 이해 하지 못 하면 위의 오류 가 발생 하기 쉽다.
이상 의 python 변수 할당 방법(가 변 과 가 변 하지 않 음)은 바로 작은 편집 이 여러분 에 게 공유 하 는 모든 내용 입 니 다.참고 하 시기 바 랍 니 다.여러분 들 도 저 희 를 많이 사랑 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
로마 숫자를 정수로 또는 그 반대로 변환그 중 하나는 로마 숫자를 정수로 변환하는 함수를 만드는 것이었고 두 번째는 그 반대를 수행하는 함수를 만드는 것이었습니다. 문자만 포함합니다'I', 'V', 'X', 'L', 'C', 'D', 'M' ; 문자열이 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.