print '(',
sys.stdout.write("text")
print ')'
예상 출력 :
(text)
또는 내가 무엇을 가지고
(text) # if the space is added by the next print statement
:
(text) # no space at all
사람이 동작을 설명 할 수 있습니까? 그냥 궁금해서 ...
print '(',
sys.stdout.write("text")
print ')'
예상 출력 :
(text)
또는 내가 무엇을 가지고
(text) # if the space is added by the next print statement
:
(text) # no space at all
사람이 동작을 설명 할 수 있습니까? 그냥 궁금해서 ...
인쇄는 항목을 문자열로 변환 한 다음 파일 객체 (기본값 : sys.stdout
)에 쓰는 것으로 구성됩니다. Python 2에서 print
문은 사용자가 쓰는 파일 객체에 소프트 공간 플래그이라는 플래그를 유지합니다. Python C API에서 file.softspace
attribute 및 PyFile_SoftSpace()
function을 참조하십시오.
이 플래그는 공백을 기록하는 시점을 추적하는 데 사용됩니다. 인쇄 내부적 PRINT_
opcodes 일련로 구현되고, 이들의 플래그 관리 (PRINT_ITEM
또는 PRINT_ITEM_TO
)와 항목 인쇄
PRINT_NEWLINE
또는 PRINT_NEWLINE_TO
)이며 공백을 쓰지 않고 플래그를 지 웁니다. >>> import sys
>>> if True:
... sys.stdout.softspace = 1
... sys.stdout.write('{}\n'.format(sys.stdout.softspace))
... sys.stdout.softspace
...
1
0
(나는 인터프리터를 방지하기 위해 if
블록을 사용 : 당신이 sys.stdout.write()
했던 것처럼그러나, 파일 객체 직접 쓰기, 플래그가 (쓰기를 실행하기 전에) 웁니다 중간에 프롬프트를 작성하는 루프).
그래서 이것은 당신의 예에서 일어나는 것입니다 :
(
이 sys.stdout
에 기록되고 sys.stdout.softspace
이 설정됩니다.sys.stdout.write('text')
다시 플래그를 지우고 플래그에 대한 )
, PRINT_ITEM
수표를 쓰기 전에 text
)
를 기록합니다. 플래그가 다시 설정됩니다.PRINT_NEWLINE
으로 작성하고 플래그를 다시 지 웁니다. 이 모든 많은 작업은 간단한 기능을 추적하는 것입니다, 파이썬 3 인쇄에 대한 기능로 이동 이유 중 하나. PEP 3105을 참조하십시오.
나는 또한 콘솔에서 시도해 보았고,'if True :'를 사용하여 즉시 모든 명령을 실행 시켰습니다.) 큰 설명에 감사드립니다! – Aemyl
@Aemyl : 방금 전 진실로 생각을 털어 놓았습니다. –
당신이 그것을 훔치지 않았다고해도, 당신이 원한다면 그것을 사용할 수 있다고 말했습니다. :) – Aemyl