복붙노트

[PYTHON] 파이썬 / IPython 인터프리터에서 밑줄 _에 값 지정 _

PYTHON

파이썬 / IPython 인터프리터에서 밑줄 _에 값 지정 _

ipython으로 파이썬 2.7에서이 함수를 만들었습니다 :

def _(v):
    return v

나중에 _ (somevalue)를 호출하면 _ = somevalue가됩니다.

in[3]: _(3)
out[3]: 3
in[4]: print _
out[4]: 3

기능이 사라졌습니다! 내가 (4)라고 부르면 나는 얻는다.

TypeError: 'int' object is not callable`

왜? 이 함수의 문제점은 무엇입니까?

해결법

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

    1.파이썬 인터프리터는 마지막 표현식 값을 _에 할당합니다.

    파이썬 인터프리터는 마지막 표현식 값을 _에 할당합니다.

    이 동작은 REPL 인터프리터로 제한되며 대화 형 코딩 세션을 지원하기위한 것입니다.

    >>> import math
    >>> math.pow(3.0, 5)
    243.0
    >>> result = _
    >>> result
    243.0
    

    표준 파이썬 인터프리터는 사용자 정의 값을 짓밟 지 않기 위해 약간의 길이로 간다. 만약 당신이 스스로 다른 것을 할당한다면, 인터프리터는 그것을 덮어 쓰지 않을 것입니다. 기술적으로 말하자면 _ 변수는 __builtin__ 속성이고, 당신 자신의 과제는 '보통'전역 변수입니다. 당신은 표준 파이썬 인터프리터를 사용하지 않고있다. 당신은 IPython을 사용하고 있으며, 그 해석기는 그렇게 신중하지 않습니다.

    IPython은이 동작을 명시 적으로 문서화합니다.

    표준 Python REPL 환경에서 _에 무언가를 할당 한 경우 __builtins __._을 통해 마지막 표현식 결과에 계속 액세스하거나 다시 그림자 (_ _)를 제거하는 _ global을 삭제할 수 있습니다.

    파이썬 인터프리터 밖에서 _는 관례에 따라 번역 가능한 텍스트 함수의 이름으로 사용됩니다 (gettext 모듈 참조, 외부 도구는 번역 가능한 문자열을 추출하기 위해 해당 함수를 찾습니다).

    그리고 관습에 따라 할당 대상으로 _을 사용하면 코드의 독자에게 해당 값을 무시한다는 사실을 알립니다. 예 : _ 임의의 float 값 목록을 생성하려면 [random.random () for _ range (5)]를 사용하거나 튜플 지정에서 세 번째 값을 나타내는 foo, bar, _ = three_values는 사용되지 않습니다. gettext 함수에 _가 이미 사용 된 경우 __을 동일한 목적으로 사용할 수 있습니다.

  2. ==============================

    2._는 인터프리터의 특수 변수이며 이전 표현식의 결과에 항상 지정됩니다. 그래서, 그런 식으로 사용하지 마십시오.

    _는 인터프리터의 특수 변수이며 이전 표현식의 결과에 항상 지정됩니다. 그래서, 그런 식으로 사용하지 마십시오.

    BTW 문제는 IPython 셸과 관련이있는 것 같습니다. 코드가 정상적인 파이썬 셸에서 제대로 작동하기 때문입니다.

    일반적인 파이썬 셸에서는 _ 변수에 아무 것도 지정하지 않으면 해당 객체에만 할당 된 채로 남아 있으며 특수한 동작을 잃어 버리게됩니다.

    파이썬 셸 :

    >>> 2*2
    4
    >>> _         #works as expected
    4
    >>> _ = 2     #after assignment, it's magic functionality is gone
    >>> _*5       
    10
    >>> _
    2
    

    IPython 셸 :

    IPython _에서는 파이썬 쉘 _과 다르게 동작합니다. 비록 당신이 그것을 어떤 변수에 할당했다하더라도 당신이 계산을하는 즉시 업데이트 될 것입니다.

    In [1]: 2*2
    Out[1]: 4
    
    In [2]: _
    Out[2]: 4
    
    In [3]: _ = 10
    
    In [4]: _*10
    Out[4]: 100
    
    In [5]: _
    Out[5]: 100
    

    IPython의 문서에서 :

    파이썬 워드 프로세서에서 :

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

    3."_"에 할당 된 변수를 생성하면 시스템 변수 _를 가면 / 마스크합니다.

    "_"에 할당 된 변수를 생성하면 시스템 변수 _를 가면 / 마스크합니다.

  4. from https://stackoverflow.com/questions/17580289/assigning-a-value-to-single-underscore-in-python-ipython-interpreter by cc-by-sa and MIT license