Python3에서 printf처럼 인쇄하는 방법은?
Python 2에서는 다음을 사용했습니다.
print "a=%d,b=%d" % (f(x,n),g(x,n))
시도해 봤습니다.
print("a=%d,b=%d") % (f(x,n),g(x,n))
Python2에서print
는 다음과 같은 문장을 도입한 키워드였습니다.
print "Hi"
Python3에서print
는 다음과 같이 호출할 수 있는 함수입니다.
print ("Hi")
두 버전 모두에서%
왼쪽에 문자열과 값 또는 값의 튜플 또는 매핑 개체를 필요로 하는 연산자입니다(예:dict
) 오른쪽에 있습니다.
따라서 선은 다음과 같이 표시되어야 합니다.
print("a=%d,b=%d" % (f(x,n),g(x,n)))
또한 Python3 이상 버전에 대한 권장 사항은 다음과 같습니다.{}
- 대신 스타일 형식 지정%
-style 형식 지정:
print('a={:d}, b={:d}'.format(f(x,n),g(x,n)))
Python 3.6은 또 다른 문자열 포맷 패러다임인 f-strings를 도입했습니다.
print(f'a={f(x,n):d}, b={g(x,n):d}')
가장 권장되는 방법은 다음과 같습니다.format
방법.자세한 내용은 여기를 참조하십시오.
a, b = 1, 2
print("a={0},b={1}".format(a, b))
오라일리의 파이썬 쿡북의 간단한 printf() 기능.
import sys
def printf(format, *args):
sys.stdout.write(format % args)
출력 예:
i = 7
pi = 3.14159265359
printf("hi there, i=%d, pi=%.2f\n", i, pi)
# hi there, i=7, pi=3.14
파이썬 3.6은 인라인 보간을 위해 f-string을 도입했습니다.더욱 좋은 것은 구문을 확장하여 보간 형식 지정자도 허용한다는 점입니다.제가 이 문제를 검색하는 동안 연구한 내용(그리고 이 오래된 질문을 발견했습니다!):
print(f'{account:40s} ({ratio:3.2f}) -> AUD {splitAmount}')
자세한 내용은 PEP 498에 있습니다.그리고... 그것은 다른 언어의 형식 지정자들과 내 감정을 정렬했습니다. -- 그들 스스로가 표현이 될 수 있다는 것을 지정자들에게 허용합니다!예! 형식 지정자를 참조하십시오.
간단한 예:
print("foo %d, bar %d" % (1,2))
더 간단한 것.
def printf(format, *values):
print(format % values )
그러면:
printf("Hello, this is my name %s and my age %d", "Martin", 20)
print("Name={}, balance={}".format(var-name, var-balance))
왜냐하면 너의%
외부에 있음print(...)
괄호, 당신은 당신의 변수를 당신의 결과에 삽입하려고 합니다.print
불러.print(...)
돌아온다None
그래서 이것은 작동하지 않을 것이고, 우리가 살고 있는 우주의 법칙에 의해 금지된 이 시간과 시간 여행으로 이미 당신의 템플릿을 인쇄했다는 작은 문제도 있습니다.
인쇄하려는 모든 것은 다음을 포함합니다.%
그리고 피연산자는 당신의 내부에 있어야 합니다.print(...)
인쇄하기 전에 문자열을 작성할 수 있도록 합니다.
print( "a=%d,b=%d" % (f(x,n), g(x,n)) )
더 명확하게 하기 위해 몇 개의 공백을 추가했습니다(필요하지 않고 일반적으로 좋은 스타일로 간주되지는 않지만).
문자 그대로 사용할 수 있습니다.printf
파이썬을 통해ctypes
모듈(또는 사용자 자신의 C 확장 모듈).
리눅스에서 당신은 할 수 있을 것입니다.
import ctypes
libc = ctypes.cdll.LoadLibrary("libc.so.6")
printf = libc.printf
printf(b"Integer: %d\n"
b"String : %s\n"
b"Double : %f (%%f style)\n"
b"Double : %g (%%g style)\n",
42, b"some string", ctypes.c_double(3.20), ctypes.c_double(3.20))
Windows에서 동등한 기능은 다음과 같습니다.
libc = ctypes.cdll.msvcrt
printf = libc.printf
설명서에 명시된 대로:
없음, 정수, 바이트 개체 및 (유니코드) 문자열은 이러한 함수 호출에서 매개 변수로 직접 사용할 수 있는 유일한 네이티브 Python 개체입니다.아무 것도 C NULL 포인터로 전달되지 않으며, 바이트 개체와 문자열은 해당 데이터(char* 또는 wchar_t*)가 포함된 메모리 블록에 포인터로 전달됩니다.Python 정수는 플랫폼 기본 Cint 유형으로 전달되며 C 유형에 맞게 값이 마스킹됩니다.
를 이은제왜파플객설랩명다니합핑지는했체것을 사용하여 랩핑한 합니다.ctypes.c_double
(영어: Python)float
으로 는일으로입니다.double
C로, (중략)로, (다)로
산출량
Integer: 42
String : some string
Double : 3.200000 (%f style)
Double : 3.2 (%g style)
print("{:.4f} @\n".format(2))
포맷은 이러한 상황에서 유용합니다.
아래 링크에서 자세한 내용을 참조하실 수 있습니다.
언급URL : https://stackoverflow.com/questions/19457227/how-to-print-like-printf-in-python3
'programing' 카테고리의 다른 글
angular-cli server - 기본 포트를 지정하는 방법 (0) | 2023.05.25 |
---|---|
Linkq 스타일 "각각" (0) | 2023.05.25 |
셀의 배경색을 셀 내 데이터의 RGB 값으로 설정 (0) | 2023.05.20 |
셸 스크립트에서 웹 브라우저를 시작하는 깨끗한 방법? (0) | 2023.05.20 |
선택/선택 해제된 키워드 지원 없이 VB에서 GetHashCode를 재정의하시겠습니까? (0) | 2023.05.20 |