3

私はpython関数について読んでいて、このコードを見ました:

def happyBirthday(person):
    print("Happy Birthday to you!")
    print("Happy Birthday to you!")
    print("Happy Birthday, dear " + person + ".")
    print("Happy Birthday to you!")

happyBirthday('Emily')
happyBirthday('Andre')

これらの括弧が印刷コマンドに使用されている理由が理解できなかったので、それらを削除しました。

def happyBirthday(person):
    print "Happy Birthday to you!"
    print "Happy Birthday to you!"
    print "Happy Birthday, dear " + person + "."
    print "Happy Birthday to you!")

happyBirthday('Emily')
happyBirthday('Andre')

これらのブラケットを削除した後でも、まったく同じ結果が得られるため、どちらが正しいのか、それらのブラケットを使用する必要があるのか​​ どうかわかりません。それらのブラケットを使用することは本当に必要ですか?

もう一つ。角かっこを使用すると+person+、親愛なるアンドレ、ハッピーバースデーの結果が得られます。しかし、私が使用する ,person,と、結果は <'Happy Birthday,dear ',''Andre','.'> になります。

これらの結果の違いを理解できません。これについて少し説明していただけますか?

4

4 に答える 4

13

それらのブラケットを使用することは本当に必要ですか?

Python 2.x では、printはステートメントであり、括弧はオプションです。

Python 3.x では、print()は関数であり、括弧は必須です。

最終的に Python 3.x に簡単に移行できるように、Python 2.x でも括弧を使用することをお勧めします。

これらの結果の違いを理解できません。これについて少し説明していただけますか?

Python 2.x で複数のコンマ区切りのものを出力すると、次のようになります。

In [1]: print(1,2,3)
(1, 2, 3)

上記はprint、タプルである単一の引数が続くステートメントとして解釈されます。タプルは、括弧とコンマでレンダリングされます。

In [2]: print 1,2,3
1 2 3

上記は、printステートメントの後に 3 つの引数が続くものとして解釈されます。各引数は、間にスペースを入れて個別に出力されます。

Python 3 との互換性に関する限り、どちらのバージョンも優れたものではありません。最初のバージョンはレンダリングが異なり、2 番目のバージョンは単に有効な Python 3 コードではありません。

これを念頭に置いて、私はあなたが固執することをお勧めします:

print("Happy Birthday, dear " + person + ".")

これにより、Python 2.x と Python 3.x の両方でまったく同じ結果が得られます。

于 2012-04-27T13:16:15.270 に答える
3

Python2 では、print はステートメントです。Python3では関数です

いくつかの単純なケースでは、括弧を使用しても同じように機能しますが、一般に、print ステートメントを括弧で囲んで Python3 に移植するだけでは簡単ではありません。

例えば。

Python 2.7.2+ (default, Oct  4 2011, 20:06:09) 
[GCC 4.6.1] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> print "hi",
hi
>>> print("hi",)
('hi',)

Python 3.2.2 (default, Sep  5 2011, 21:17:14) 
[GCC 4.6.1] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> print "hi",
  File "<stdin>", line 1
    print "hi",
             ^
SyntaxError: invalid syntax
>>> print("hi",)
hi
于 2012-04-27T13:16:53.117 に答える
1

すでに述べたように、print は Python 2 のステートメントです。次に、print('xxx') を実行すると、全体が

('xxx')

が最初に解釈されます。単一の括弧は無視されるため、これは単純に出力される文字列です。

'string' + name + 'string' を実行すると、最初にそれらの文字列が連結 (追加) され、結果として文字列になります。次に、括弧内で評価され、それ自体が返されてから出力されます。

逆に、print('x', 'y', 'z') を実行すると、全体が

('x', 'y', 'z')

<'Happy Birthday,dear ',''Andre','.'> のように出力されるタプルです。

于 2012-04-27T13:20:40.010 に答える
0

str(person)印刷ステーメントで試してみてください

于 2012-04-27T15:54:32.300 に答える