[python] Python3에서 printf처럼 인쇄하는 방법은 무엇입니까?

파이썬 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 형식 대신 -style 형식 을 사용하는 것입니다 %.

print('a={:d}, b={:d}'.format(f(x,n),g(x,n)))

파이썬 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))


답변

O’Reilly ‘s Python Cookbook의 간단한 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


답변

Python 3.6에는 인라인 보간을위한 f- 문자열이 도입되었습니다. 더 좋은 점은 구문을 확장하여 형식 지정자가 보간되도록 허용한다는 것입니다. 내가 이것을 구글 검색하는 동안 내가 노력했던 것 (이 오래된 질문을 만났다!) :

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(...)괄호 밖에 있기 때문에 호출 결과 에 변수를 삽입하려고합니다 print. print(...)반환 None, 그래서 이것은 작동하지 않으며, 우리가 살고있는 우주의 법에 의해 금지되는이 시간과 시간 여행으로 이미 템플릿을 인쇄 한 작은 문제도 있습니다.

당신이 원하는 모든 것은 포함, 인쇄 할 %수와 연산, 요구 사항을 내부 사용자 print(...)가 인쇄되기 전에 문자열이 구축 될 수 있도록하는 것이, 호출.

print( "a=%d,b=%d" % (f(x,n), g(x,n)) )

명확하게하기 위해 몇 개의 공간을 추가했습니다 (필요하지는 않지만 일반적으로 좋은 스타일로 간주되지는 않지만).