Python의 동적 유형

4047 단어 Python

개요


처음 파이썬 버전 3의 학습 노트

의사 일정

  • 유형 선언이 없는 Pythn
  • 공유 벤치마크
  • 공유 벤치마크 및 객체 덮어쓰기
  • 동일 및 동일
  • Python의 동적 유형


    유형 선언 없음


    변수 만들기

    a = 3
    
  • 변수는 대입 값과 동시에 생성
  • 제작 후 대입한 경우 대입된 값이 새로운 값으로 교체
  • 이 경우 변수가 이미 생성되었기 때문에 변수는 새로 생성되지 않습니다
  • 유형 정보

  • 변수 자체에 유형 정보가 없음
  • 유형 정보가 있는 것은 변수에 대응하는'대상'
  • 이다
  • 변수는 해당 대상(이때 대입된 데이터)에 대한 참고만 있음
  • 프로그램을 실행할 때의 변수 처리

  • 해당되는 모든 객체를 교체
  • 대응 대상이 없는 변수를 사용할 수 없음
  • 변수와 대상은 메모리의 다른 부분에 저장되고 링크

    앨범 모음집

  • 새 대상을 변수에 대입하면 이전에 대입한 대상이 버려지고 그 대상이 차지하는 메모리 영역이 열려 가벨 컬렉션
  • 이라고 부른다.

    공유 참조

    a = 3
    b = a
    
    이게 어떻게 된 일입니까

    따라서 여러 변수가 동일한 객체에 대한 참조가 되는 것을 공유 데이텀이라고 합니다.
    그리고 앞의 코드에 한 줄을 더해라
    a = 3
    b = a
    a = 'spam'
    
    이렇게 돼 있어요.
    변수 a는 새로 만든 문자열 대상의'spam'의 참고 값이지만 변수 b는 변하지 않고 대상 3에 대한 참고 값을 유지합니다

    공유 참조 및 객체 덮어쓰기


    목록은 객체를 꺾쇠 괄호 안에 배치하고 무시할 수 있는 객체입니다.
    다음 예에서 L2는 쌍[2, 3, 4]에 대한 참조를 유지합니다.
    L1 = [2, 3, 4]
    L2 = L1
    L1 = 24
    
    다음 예제에서는 참조로 사용할 객체의 값이 무시됩니다.
    # 可変性のオブジェクト
    >>> L1 = [2, 3, 4]
    
    # 同じオブジェクトへのリファレンスをもう1つ作る
    >>> L2 = L1
    
    # 要素の上書き
    >>> L1[0] = 24
    
    # L1に対応するリストに変更が加えられている
    >>> L1
    [24, 3, 4]
    
    # L2にも影響が!
    >>> L2
    [24, 3, 4]
    
    다음 방법으로 복제한 경우 L2는 변경되지 않으며 2개 변수는 서로 다른 메모리 영역의 상태를 나타낸다
    # 可変性のオブジェクト
    >>> L1 = [2, 3, 4]
    
    # L1のコピーを作る
    >>> L2 = L1[:]
    
    # 要素の上書き
    >>> L1[0] = 24
    
    # L1に対応するリストに変更が加えられている
    >>> L1
    [24, 3, 4]
    
    # L2は変更されない
    >>> L2
    [2, 3, 4]
    

    동등과 동일

    >>> x = 42
    
    # 42はすぐに破棄される?
    >>> x = 'shrubbery'
    
    Python에서 작은 정수나 문자 수가 적은 문자열이 캐시되어 다시 사용됩니다

    비교 객체의 동일성 여부에는 두 가지 유형이 있습니다.

  • = 연산자는 객체가 동일한지 비교
  • is 연산자는 대상이 동일한지 비교하는 데 사용됩니다
  • 동등보다 동등한 조건이 더 엄격
  • >>> L = [1, 2, 3]
    
    # MとLは同じオブジェクトのリファレンス
    >>> M = L
    
    # 両者が「同等」であるかの比較
    >>> L == M
    True
    
    # 両者が「同一」であるかの比較
    >>> L is M
    True
    
    >>> L = [1, 2, 3]
    
    # MとLが対応するオブジェクトは別のもの
    >>> M = [1, 2, 3]
    
    # 両者の値は同じ
    >>> L == M
    True
    
    # 2つのオブジェクトは同等だが同一ではない
    >>> L is M
    False
    

    만약 소수치에 대해 같은 일을 진행한다면 결과는 달라질 수 있다

  • 이하의 경우 X와 Y가 같아도 같지 않다
  • 단, 작은 수치나 문자열이 고속 캐시되어 재사용되기 때문에 둘 다 같은 대상의 참고가 된다
  • >>> X = 42
    
    # 2つの42は本来、同一でないはず
    >>> Y = 42
    >>> X == Y
    True
    
    # キャッシュが行われるため、2つは同一になる!
    >>> X is Y
    True
    

    좋은 웹페이지 즐겨찾기