복붙노트

[PYTHON] 내장 함수와 이름 충돌

PYTHON

내장 함수와 이름 충돌

나는 아래와 같이 실수를했다.

>>> list = ['a', 'b', 'c']

하지만 이제 내장 함수 목록 ()을 사용하고 싶습니다. 보시다시피 listname 목록과 내장 함수 목록 () 사이에 이름 충돌이 있습니다.

파이썬 셸을 다시 시작하지 않고 변수가 아닌 내장 함수로 list를 사용할 수 있습니까?

해결법

  1. ==============================

    1.__builtins __. list 또는 __builtins __ [ '__ list__'] (컨텍스트에 따라 다름)를 사용하거나 단순히 목록을 다시 삭제합니다 (del list).

    __builtins __. list 또는 __builtins __ [ '__ list__'] (컨텍스트에 따라 다름)를 사용하거나 단순히 목록을 다시 삭제합니다 (del list).

    수입 불필요 :

    >>> __builtins__.list
    <type 'list'>
    

    __builtins__의 존재는 CPython 구현 세부 사항입니다. __main__ 모듈에서는 모듈이며 다른 곳에서는 __dict__ 모듈입니다. Jython, IronPython 및 PyPy는이 기능을 전혀 사용할 수 없도록 선택할 수 있습니다. 해당 플랫폼이나 Python 3 호환 구현 인 builtins 모듈에 __builtin__ 모듈을 사용하십시오.

    >>> import __builtin__
    >>> __builtin__.list
    <type 'list'>
    
  2. ==============================

    2.1 단계 : 목록을 다른 이름으로 리 바인드

    1 단계 : 목록을 다른 이름으로 리 바인드

    lst = list
    

    2 단계 : 목록 변수 삭제

    del list
    

    3 단계 : 다시하지 마세요.

    __builtins __보다 더 선호합니다. __. 목록은 단순히 입력을 저장하기 때문에, list라는 변수가 아직 남아 있지 않습니다. 그러나 항상 문제를 피하는 것이 가장 좋습니다. 프로덕션 코드를 작성할 때는 항상 내장 함수와 동일한 이름의 변수를 사용하지 마십시오.

  3. ==============================

    3.내장 함수 또는 유형을 변수 이름으로 사용하지 마십시오. 그것은 그 것처럼 간단합니다. 언어가 그런 의미가 아닙니다. 그리고 그렇게하는 것은 말이되지 않습니다.

    내장 함수 또는 유형을 변수 이름으로 사용하지 마십시오. 그것은 그 것처럼 간단합니다. 언어가 그런 의미가 아닙니다. 그리고 그렇게하는 것은 말이되지 않습니다.

    뿐만 아니라 목록에 이름 "목록"을 사용하는 것은 매우 모호하며 모든 실제 코드에서 원격으로 사용할 수 있을지는 의문입니다.

    내장을 섀도 잉해서는 안되는 몇 가지 이유가 있습니다. 좀 더 심각한 것들은 다음과 같습니다.

  4. ==============================

    4.실수를 수정하려면 또 다른 옵션이 있습니다. 내장 된 'function'list ()가 실제로 클래스라는 것을 기억하면 다음과 같이 할 수 있습니다 :

    실수를 수정하려면 또 다른 옵션이 있습니다. 내장 된 'function'list ()가 실제로 클래스라는 것을 기억하면 다음과 같이 할 수 있습니다 :

    list = type([])
    
  5. ==============================

    5.py2x에서 __builtin __을 사용하십시오.

    py2x에서 __builtin __을 사용하십시오.

    >>> import __builtin__ 
    >>> __builtin__.list
    <type 'list'>
    

    __builtins __을 사용하지 마십시오. list :

    문서에서 :

    py3x의 경우 :

    >>> import builtins
    >>> builtins.list
    <class 'list'>
    
  6. ==============================

    6.항상 __builtins __로 사용 가능합니다. list :

    항상 __builtins __로 사용 가능합니다. list :

    >>> __builtins__.list
    <class 'list'>
    >>> list = [1, 2, 3]
    >>> __builtins__.list
    <class 'list'>
    

    그러나 다시 리바 인하면 옵션을 사용할 수 없습니다.

    __builtin__ 모듈 (또는 밑줄이없는 builtins)을 파이썬 3에서 사용할 수도 있지만 가져와야합니다. 그러나 이것들은 여분의 옵션이 아닌 동일한 것을 철자하는 다른 방법입니다 - 하나를 수정하면 두 가지 모두에 영향을 미칩니다 :

    >>> import builtins
    >>> builtins.list
    <class 'list'>
    >>> builtins.list = [1, 2, 3]
    >>> builtins.list
    [1, 2, 3]
    >>> __builtins__.list
    [1, 2, 3]
    
  7. ==============================

    7.예, 다른 사람들은 위에 말합니다. 변수 이름으로 내장 이름을 사용하지 마십시오. 이것은리스트, dict 등으로 간다.

    예, 다른 사람들은 위에 말합니다. 변수 이름으로 내장 이름을 사용하지 마십시오. 이것은리스트, dict 등으로 간다.

    마찬가지로 다른 사람들이 말한 것처럼 __builtins __. list를 통해 유형 목록에 액세스 할 수 있습니다. 따라서 목록을 호출해야하는 경우 __builtins __를 리바운드하지 않는 한 목록을 찾을 수 있습니다.

    중요한 것은 목록은 이름입니다. 목록의 인스턴스로 리바운드했습니다. list가 를 다시 의미하도록하려면 다시 바인딩하십시오. 파이썬 2.7에서 :

    >>> __builtins__.list
    <type 'list'>
    >>> list
    <type 'list'>
    >>> list = [1, 2, 3]
    >>> list
    [1, 2, 3]
    >>> fred = list
    >>> fred
    [1, 2, 3]
    >>> list = __builtins__.list
    >>> list
    <type 'list'>
    
  8. from https://stackoverflow.com/questions/16523789/naming-conflict-with-built-in-function by cc-by-sa and MIT license