[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.파이썬 인터프리터는 마지막 표현식 값을 _에 할당합니다.
파이썬 인터프리터는 마지막 표현식 값을 _에 할당합니다.
이 동작은 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._는 인터프리터의 특수 변수이며 이전 표현식의 결과에 항상 지정됩니다. 그래서, 그런 식으로 사용하지 마십시오.
_는 인터프리터의 특수 변수이며 이전 표현식의 결과에 항상 지정됩니다. 그래서, 그런 식으로 사용하지 마십시오.
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."_"에 할당 된 변수를 생성하면 시스템 변수 _를 가면 / 마스크합니다.
"_"에 할당 된 변수를 생성하면 시스템 변수 _를 가면 / 마스크합니다.
from https://stackoverflow.com/questions/17580289/assigning-a-value-to-single-underscore-in-python-ipython-interpreter by cc-by-sa and MIT license
'PYTHON' 카테고리의 다른 글
[PYTHON] 무한 중첩 목록에서 정확히 무슨 일이 일어나고 있습니까? (0) | 2018.10.20 |
---|---|
[PYTHON] 어떻게 파이썬에서 문자열 소문자로? (0) | 2018.10.19 |
[PYTHON] PDF를 이미지로 자동 변환 (0) | 2018.10.19 |
[PYTHON] 모든 하위 디렉토리를 포함하여 디렉토리에서 파일을 얻는 방법 (0) | 2018.10.19 |
[PYTHON] \ n을 <br />으로 바꾸십시오. (0) | 2018.10.19 |