python print出力の詳細

5916 ワード

print
eval()
>>> help(eval)      #      ,        ,       

Help on built-in function eval in module __builtin__:

eval(...)
    eval(source[, globals[, locals]]) -> value

    Evaluate the source in the context of globals and locals.
    The source may be a string representing a Python expression
    or a code object as returned by compile().
    The globals must be a dictionary and locals can be any mapping,
    defaulting to the current globals and locals.
    If only globals is given, locals defaults to it.

要約するとeval()は文字列の中でpython式に合致するものを計算する.つまり、
>>> 3+4         #       ,python             
7
>>> "3+4"       #       ,python          ,         python      
'3+4'
>>> eval("3+4") #          ,                
7


文字列「加算」の例を次に示します.
>>> "hiekay"+".github.io"
'hiekay.github.io'
>>> "'hiekay'+'.github.io'"    #     ,python     “  ” 
"'hiekay'+'.github.io'"
>>> eval("'hiekay'+'.github.io'") #eval()         ,             
'hiekay.github.io'


ちなみにeval()に似たもう一つの関数:exec()は、文字列やファイル内のpython文を実行するために特化しています.
>>> exec "print 'hello, hiekay'"
hello, hiekay
>>> "print 'hello, hiekay'"
"print 'hello, hiekay'"


print詳細
printコマンドはプログラミングの実践で多く使われています.特に、プログラムがいつまで実行されたかを見て、printで出力しなければなりません.本論では、より広く言えば、プログラムで得られた結果を出力する問題を理解しなければなりません.
比較的簡単な出力です.
>>> name = 'hiekay'
>>> room = 703
>>> website = 'hiekay.github.io'
>>> print "MY name is:%s
My room is:%d
My website is:%s"%(name,room,website) MY name is:hiekay My room is:703 My website is:hiekay.github.io

ここで,%s,%dはプレースホルダである.
>>> a = 3.1415926
>>> print "%d"%a    #%d      ,int  
3
>>> print "%f"%a  #%f     
3.141593
>>> print "%.2f"%a #          
3.14
>>> print "%.9f"%a  #           ,    0  
3.141592600
>>> b = 3          
>>> print "%4d"%b   #     ,              ,           
   3                #     0003   


様式を変えて、このように書くと、上と少し違います.
>>> import math     #      
>>> print "PI=%f"%math.pi #  ,           
PI=3.141593
>>> print "PI=%10.3f"%math.pi #    ,                      10 ,     
PI=     3.142
>>> print "PI=%-10.3f"%math.pi #        ,       
PI=3.142
>>> print "PI=%06d"%int(math.pi) #       ,   6 ,     0   。
PI=000003


実際には、上記の数値操作と同様に、文字列に対してもいくつかの制約出力操作を行うことができます.
>>> website
'hiekay.github.io'
>>> print "%.3s"%website
hie
>>> print "%.*s"%(3,website)
hie
>>> print "%7.3s"%website
    hie
>>> print "%-7.3s"%website
hie    


全体的に、数字の出力操作と似ています.しかし、実際の操作では、これらの使用は本当に多くありません.少なくとも私の長年のコード生涯では、上記の複雑な操作を使用しています.今、カラムに表示されているときは、floatタイプのデータに対して小数点以下の桁数を出力する操作が多いです.その出力操作は、デフォルトの方法で多いです.官がここで私の無知を軽蔑しているのを見てください.
行文はここまでで、python 3を使用する場合はprint()を使用し、カッコを付けます.
printには出力時に各行の後ろに改行記号を自動的に付けるという特徴がありますが、これは前述しています.
>>>  website
'hiekay.github.io'
>>> for word in website.split("."):
...     print word
... 
hiekay
github
io
>>> for word in website.split("."):
...     print word,         #  ,      ,         。
... 
hiekay github io


##%rは万能ですか?
怠け者は世界を変えて、特にコードを叩く分野にいると言ったことがあります.そこである人は聞いて、前の1つは%sで、1つは%dで、面倒で、1つの万能がありますか?そこでネット上で答えを出す人がいて、%rは万能です.実験を見る:
>>> import math
>>> print "PI=%r"%math.pi
PI=3.141592653589793
>>> print "Pi=%r"%int(math.pi)
Pi=3


本当に万能ですね.焦らないで、これを見て、あなたは愚かではありませんか?
>>> print "Pi=%s"%int(math.pi)
Pi=3


もちろん、これは間違いに違いありません.
>>> print "p=%d"%"pi"
Traceback (most recent call last):
  File "", line 1, in 
TypeError: %d format: a number is required, not str


ここを見ると、ちょっとぼんやりしているのが普通ですが、特に万能と呼ばれる%rと%sは、もともと%dに属していたものを正常に出力することができますか?
実は、%rも%s(%d)も整数としてのオブジェクトを文字列出力に変換し、整数を出力するのではなく文字列出力に変換します.しかし、%rと%sは少し違います.本論では、これについて深く研究しないで、このような対応を説明します:%s->str();r->repr()って、どういう意味ですか?すなわち、%sはstr()関数を呼び出してオブジェクトをstrタイプに変換し、%rはrepr()を呼び出してオブジェクトを文字列に変換する.両者の違いについては、Difference between str and repr in Pythonを参照してください.以下は簡単な例です.両者の違いを示します.
>>> import datetime
>>> today = datetime.date.today()
>>> today
datetime.date(2014, 8, 15)
>>> str(today)
'2014-08-15'
>>> repr(today)
'datetime.date(2014, 8, 15)'

最後に私の1つの観点を表現して、万能なものは何もなくて、すべては実際の需要によって決まります.
より多くの出力フォーマットのプレースホルダの説明について、このページには表がありますが、残念ながら中国語が見つかりませんでした.もし役人が中国語を見つけたら、共有してください.string formatting
さいかくちょう
>>> myinfo
{'website': 'hiekay.github.io', 'name': 'hiekay', 'room': 703}
>>> print "hiekay is in %(room)d"%myinfo
hiekay is in 703


見官は上の出力が分かりましたか?ちょっと面白いです.このような出力は前の出力への拡張と言える.
この拡張に加えて、出力時には「format」というものを使うこともできますが、この中には%は見えませんが、多くなりました.実験を見てみましょう.
>>> print "My name is {0} and I am in {1}".format("hiekay",703)     # format         
My name is hiekay and I am in 703
>>> "My website is {website}".format(website="hiekay.github.io")    #{}             
'My website is hiekay.github.io'


format出力方式牛迫