Python 문자열의 intern 메커니즘 분석

intern 메커니즘:
문자열 형식은Python에서 가장 자주 사용하는 데이터 형식 중 하나로서Python 해석기는 문자열 사용의 효율과 사용 성능을 향상시키기 위해 많은 최적화를 했다. 예를 들어Python 해석기에서intern(문자열 주재) 기술을 사용하여 문자열 효율을 향상시켰는데 무엇이 intern 메커니즘입니까?즉, 값이 같은 문자열 대상은 단지 한 부만 저장하고 하나의 문자열 저축 탱크에 놓으면 공용이다. 물론 바꿀 수 없다. 이것은 문자열이 변하지 않는 대상이어야 한다는 것을 결정한다.
간단한 방법:
인터넷 메커니즘을 실현하는 방식은 매우 간단하다. 바로 문자열 저장 탱크를 유지하는 것이다. 이 탱크는 사전 구조이다. 만약에 문자열이 이미 탱크에 존재한다면 새로운 문자열을 만들지 않고 이전에 만든 문자열 대상을 되돌려준다. 만약에 이전에 이 탱크에 가입하지 않았다면 먼저 문자열 대상을 구성하고 이 대상을 탱크에 넣는다.다음에 얻기 편합니다.
그러나 해석기 내부에서 intern 메커니즘의 사용 전략에 대해 연구한 바가 있다. 어떤 장면은 자동적으로 intern을 사용하고 어떤 부분은 수동 방식을 통해야만 시작할 수 있다. 아래의 몇 가지 흔히 볼 수 있는 작은 함정을 보자.
  • 1.셸에서 예시적으로 모든 문자열이intern 메커니즘을 사용하는 것은 아니다.밑줄, 숫자, 알파벳을 포함하는 문자열만 intern에 들어갈 수 있으며, 당연히 20자를 초과해서는 안 된다.왜냐하면 20자가 넘으면 해석기는 이 문자열을 자주 사용하지 않기 때문에 문자열 탱크에 넣지 않아도 된다고 생각하기 때문이다
  • 
    >>> s1="hello"
    >>> s2="hello"
    >>> s1 is s2
    True#  , intern 
    >>> s1="hell o"
    >>> s2="hell o"
    >>> s1 is s2
    False#  20 , intern 
    >>> s1 = "a" * 20
    >>> s2 = "a" * 20
    >>> s1 is s2
    True
    >>> s1 = "a" * 21
    >>> s2 = "a" * 21
    >>> s1 is s2
    False
    >>> s1 = "ab" * 10
    >>> s2 = "ab" * 10
    >>> s1 is s2
    True
    >>> s1 = "ab" * 11
    >>> s2 = "ab" * 11
    >>> s1 is s2
    False
  • 2.그러나 PyCharm에서 같은 문자열이면 20자를 넘지 않고 모두 True이며 밑줄, 숫자, 알파벳이 아닌 문자열이다.개인 이해: IDE가 잘 안 돼서..
  • 
    s1 = "hell o"
    s2 = "hell o"
    print(s1 is s2) # True
    s1 = "hell!*o"
    s2 = "hell!*o"
    print(s1 is s2) # True
    s1 = "a" * 20
    s2 = "a" * 20
    print(s1 is s2) # True
    s1 = "a" * 21
    s2 = "a" * 21
    print(s1 is s2) # False
    s1 = "ab" * 10
    s2 = "ab" * 10
    print(s1 is s2) # True
    s1 = "ab" * 11
    s2 = "ab" * 11
    print(s1 is s2) # False
  • 3.문자열을 연결할 때, 컴파일링 운행 문제와 관련된다
  • 
    >>> s1 = "hell"
    >>> s2 = "hello"
    >>> s1 + "o" is s2
    False
    >>> "hell" + "o" is s2
    True
    >>>
    #  shell IDE 
    s1 = "hell"
    s2 = "hello"
    print(s1 + "o" is s2) # False
    print("hell" + "o" is s2) # True# "hell" + "o" "hello", s1+"o" s1 , , intern
    작가: 노비타 첸
    출처:http://www.cnblogs.com/chenshengkai/
    이상은Python에서 문자열의intern 메커니즘에 대한 상세한 내용을 분석하고,python 문자열의intern 메커니즘에 대한 더 많은 자료는 우리의 다른 관련 문장을 주목하십시오!

    좋은 웹페이지 즐겨찾기