파이썬 2.x에서는 print
함수의 경우 인자들이 굳이 괄호 안에 들어 있어야 할 필요는 없다. 또한 여러 개의 값을 동시에 인쇄할 수도 있다. 이때 인자들은 콤마로 구분지어진다.
In [1]:
a = "string"
b = "string1"
In [2]:
print a, b
In [3]:
print "The return value is", a
주의: 아래와 같이 하면 모양이 기대와 다르게 나온다.
In [4]:
print(a, b)
In [5]:
print("The return value is", a)
하지만 위와 같이 괄호를 사용하지 않는 방식은 파이썬 3.x에서는 지원되지 않는다. 따라서 기본적으로 아래와 같이 사용하는 것을 추천한다.
In [6]:
print(a+' '+b)
In [7]:
print("The return value is" + " " + a)
아래와 같이 할 수도 있다
In [8]:
print(a),; print(b)
그런데 위 경우 a
와 b
를 인쇄할 때 스페이스가 자동으로 추가된다.
그런데 스페이스 없이 stringstring1
으로 출력하려면 두 가지 방식이 있다.
In [9]:
print(a+b)
In [10]:
print("{}{}".format(a,b))
서식이 있는 인쇄방식을 이용하여 다양한 형태로 자료들을 인쇄할 수 있다. 서식을 사용하는 방식은 크게 두 가지가 있다.
%
를 이용하는 방식
format
키워드를 사용하는 방식
%
보다 좀 더 다양한 기능을 지원한다. MessageFormat
클래스의 format
메소드가 비슷한 기능을
지원하지만 사용법이 좀 더 복잡하다. %s
: 문자열 서식지정자%d
: int
형 서식지정자
In [11]:
print("%s%s%d" % (a, b, 10))
In [12]:
from math import pi
부동소수점 실수의 경우 여러 서식을 이용할 수 있다.
In [13]:
print("원주율값은 대략 %f이다." % pi)
In [14]:
print("원주율값은 대략 %e이다." % pi)
In [15]:
print("원주율값은 대략 %g이다." % pi)
소수점 이하 숫자의 개수를 임의로 정할 수 있다.
In [16]:
print("원주율값은 대략 %.10f이다." % pi)
In [17]:
print("원주율값은 대략 %.10e이다." % pi)
In [18]:
print("원주율값은 대략 %.10g이다." % pi)
pi
값 계산을 소숫점 이하 50자리 정도까지 계산함을 알 수 있다. 이것은 사용하는 컴퓨터의 한계이며 컴퓨터의 성능에 따라 계산능력이 달라진다.
In [19]:
print("지금 사용하는 컴퓨터가 계산할 수 있는 원주율값은 대략 '%.50f'이다." % pi)
여러 값을 보여주면 아래 예제처럼 기본은 왼쪽에 줄을 맞춘다.
In [20]:
print("%f"% pi)
print("%f"% pi**3)
print("%f"% pi**10)
오른쪽으로 줄을 맞추려면 아래 방식을 사용한다.
숫자 12는 pi**10
의 값인 93648.047476
가 점(.)을 포함하여 총 12자리로 가장 길기에 선택되었다.
표현방식이 달라지면 다른 값을 선택해야 한다.
In [21]:
print("%12f"% pi)
print("%12f"% pi**3)
print("%12f"% pi**10)
In [22]:
print("%12e"% pi)
print("%12e"% pi**3)
print("%12e"% pi**10)
In [23]:
print("%12g"% pi)
print("%12g"% pi**3)
print("%12g"% pi**10)
In [24]:
print("%16.10f"% pi)
print("%16.10f"% pi**3)
print("%16.10f"% pi**10)
In [25]:
print("%16.10e"% pi)
print("%16.10e"% pi**3)
print("%16.10e"% pi**10)
In [26]:
print("%16.10g"% pi)
print("%16.10g"% pi**3)
print("%16.10g"% pi**10)
비어 있는 자리를 숫자 0
으로 채울 수도 있다.
In [27]:
print("%012f"% pi)
print("%012f"% pi**3)
print("%012f"% pi**10)
In [28]:
print("%012e"% pi)
print("%012e"% pi**3)
print("%012e"% pi**10)
In [29]:
print("%012g"% pi)
print("%012g"% pi**3)
print("%012g"% pi**10)
In [30]:
print("%016.10f"% pi)
print("%016.10f"% pi**3)
print("%016.10f"% pi**10)
In [31]:
print("%016.10e"% pi)
print("%016.10e"% pi**3)
print("%016.10e"% pi**10)
In [32]:
print("%016.10g"% pi)
print("%016.10g"% pi**3)
print("%016.10g"% pi**10)
자릿수는 계산결과를 예상하여 결정해야 한다. 아래의 경우는 자릿수를 너무 작게 무시한다.
In [33]:
print("%12.20f" % pi**19)
In [34]:
print("{}{}{}".format(a, b, 10))
In [35]:
print("{:s}{:s}{:d}".format(a, b, 10))
In [36]:
print("{:f}".format(pi))
print("{:f}".format(pi**3))
print("{:f}".format(pi**10))
In [37]:
print("{:12f}".format(pi))
print("{:12f}".format(pi**3))
print("{:12f}".format(pi**10))
In [38]:
print("{:012f}".format(pi))
print("{:012f}".format(pi**3))
print("{:012f}".format(pi**10))
format
함수는 인덱싱 기능까지 지원한다.
In [39]:
print("{2}{1}{0}".format(a, b, 10))
인덱싱을 위해 키워드를 사용할 수도 있다.
In [40]:
print("{s1}{s2}{s1}".format(s1=a, s2=b, i1=10))
In [41]:
print("{i1}{s2}{s1}".format(s1=a, s2=b, i1=10))
인덱싱과 서식지정자를 함께 사용할 수 있다
In [42]:
print("{1:12f}, {0:12f}".format(pi, pi**3))
In [43]:
print("{p1:12f}, {p0:12f}".format(p0=pi, p1=pi**3))
%
연산자를 사용하는 방식과 format
함수를 사용하는 방식 중에 어떤 방식을 선택할지는 경우에 따라 다르다.
%
방식은 C, Java 등에서 일반적으로 지원되는 방식이다.format
방식은 좀 더 다양한 활용법을 갖고 있다.파이썬에서 사용하는 모든 객체는 __str__
메소드를 갖고 있으며, 이 메소드는 해당 객체를 보여주는 데에 사용된다. 예를 들어 print
명령어를 사용하면 무조건 해당 객체의 __str__
메소드가 호출되어 사용된다.
또한 str
함수가 있어서 동일한 역할을 수행한다.
In [44]:
a = 3.141592
In [45]:
print(a)
In [46]:
a.__str__()
Out[46]:
In [47]:
str(a)
Out[47]:
In [48]:
b = [2, 3.5, ['school', 'bus'], (1,2)]
str(b)
Out[48]:
str
함수는 문자열값을 리턴한다.
In [49]:
type(str(b))
Out[49]:
앞서 언급한 대로 __str__
메소드는 print
함수뿐만 아니라 서식을 사용할 때도 기본적으로 사용된다.
In [50]:
print(b)
In [51]:
"%s" % b
Out[51]:
In [52]:
"{}".format(b)
Out[52]:
__str__
와 더불어 __repr__
또한 모든 파이썬 객체의 메소드로 존재한다.
__str__
와 비슷한 기능을 수행하지만 __str__
보다 정확한 값을 사용한다.eval
함수와 사용하여 본래의 값을 되살리는 기능을 제공한다.repr
함수를 사용하면 해당 객체의 __repr__
메소드가 호출된다.
In [53]:
c = str(pi)
In [54]:
pi1 = eval(c)
pi1
Out[54]:
하지만 pi1
을 이용하여 원주율 pi
값을 되살릴 수는 없다.
In [55]:
pi1 - pi
Out[55]:
repr
함수는 eval
함수를 이용하여 pi
값을 되살릴 수 있다.
In [56]:
pi2 = repr(pi)
In [57]:
type(pi2)
Out[57]:
In [58]:
eval(pi2) - pi
Out[58]:
repr
함수를 활용하는 서식지정자는 %r
이다.
In [59]:
"%s" % pi
Out[59]:
In [60]:
"%r" % pi
Out[60]:
In [61]:
"%d" % pi
Out[61]: