파이썬 (또는 가치 기준에 의한) 파라미터 전달 함수

매개 변수 전달 함수

값으로, 값이 두 가지 함수의 인수를 전달하고 참조로 전달하기 만 인자에 변수의 값을 복사, 외부 함수의 내부 기능의 동작이 송신되는 변수의 값을 변경하고, 외부 변수에 대한 참조를 전달하지 않는다 어드레스 함수는 직접 내부 변화 것 일반적 기능, 외부 변수의 함수 값을 호출 한 후, 외부 변수의 저장 기능을 작동

def Demo(a):
    a = a + 1
    print(id(a))

if __name__ == '__main__':
    a = 3
    print(id(a)) # 140705335465056
    Demo(a) # 140705335465088
    print(id(a)) # 140705335465056

, 튜플, 전송 값의 시간에 배달 증명은 너무 변수의 값 및 문자의 다른 유형 인 함수 호출 전후의 변수 값의 주소에 변화를 볼 다음 목록에 시도

def Demo(a):
    a.append(3)
    print(id(a))

if __name__ == '__main__':
    s = [1,2]
    print("value = " + str(s) + "address = " + str(id(s)))  # value = [1, 2]address = 1574898786888
    Demo(s)  # value = [1, 2, 3]address = 1574898786888
    print("value = " + str(s) + "address = " + str(id(s)))  # value = [1, 2, 3]address = 1574898786888

어드레스 값 일치 함수 호출은 참조를 전달하는 증명하고, 함수 값 후도를 나타내는 변경이 실행되는 a.append()것을들에서 메모리 동작

당신이 튜플을 전달하면 출력이 주소의 세 번 같은 작품이다, 그래서 그것은 튜플을 수정할 수 없습니다, 그러나 매개 변수 값이 전달 될 때 실제로 튜플이 전달됩니다.

또 다른 경우

def Demo(a):
    a[0].append(3)
    print("value = " + str(a) + "address = " + str(id(a)))

if __name__ == '__main__':
    a = ([1,2], 2)
    print("value = " + str(a) + "address = " + str(id(a)))  # value = ([1, 2], 2)address = 2616967970056
    Demo(a)  # value = ([1, 2, 3], 2)address = 2616967970056
    print("value = " + str(a) + "address = " + str(id(a)))  # value = ([1, 2, 3], 2)address = 2616967970056

튜플 요소가 이전 또는 함수를 호출 한 후리스트 인 경우, 함수 밖에서는 단지 말을하기 시작 통과, 그것은 느낌의 참조에 따라 변경하지만, 함수 외부에 대한, 아니 그의 첫 번째 요소는 항상 0입니다 <class 'list'>목록의 요소가 변경되지 않은으로 APPEND () 함수를 호출하는 동안, 튜플, 상관 튜플 판사가 요소 판단 요소의 주소가 변경되지 않은 것입니다 변경되지 않았습니다하지 않아도, 전송은 목록에있는 이유 변수 요소의 주소 값은 왜 튜플은 변경할 수 없습니다, 이는 변경되지 않지만, 데이터 튜플 변수 인 경우, 다음 데이터의 유형을 변경할 수 있습니다

개요

그러한리스트, 사전, 전달 함수 파라미터시 세트 파이썬 두 개의 데이터 유형, 가변 데이터 타입 가변 비 가변 데이터, 참조에 의해 전달 같은 숫자, 문자, 튜플 함수로서 불변의 데이터 타입, 통과 파라미터 때 , 그러나 더 정확한 전달 함수 파라미터 사용 파이썬 통과 오브젝트 참조 변수 참조 (예를 들면 사전 또는 목록)를 상기 수신 된 객체의 함수 인 경우의 실시 예는, 원래의 객체를 수정할 수 값 - 동등한 관통 오브젝트를 전달하는 방법 "에 의해 참조." 함수는 수신 된 객체가 불변 인 경우 기준 (예컨대 숫자, 문자 또는 튜플) 직접적 원래 객체를 수정할 수 - 객체 "전통적인 가치 '에 상응 통과.

그들은 데이터 튜플에주의를 지불해야하는 상황의 변수 유형처럼

참조 링크 1 개
참조 링크 (2)

게시 62 개 원래 기사 · 원 찬양 33 ·은 10000 +를 볼

추천

출처blog.csdn.net/zjbyough/article/details/95529933