2017-12-27 1 views
0

私はPythonでif文を書いています。複数の値を割り当てる必要があります。Pythonの1行に値を代入するときのカンマとセミコロンの違い

スタイルを設定するには、すべての割り当てを1行にまとめてください。そこで、カンマで区切りました。私はそれが動作セミコロンを使用する場合、しかし

SyntaxError: can't assign to literal

if True: 
    a=0.5, b=0.5 
    print(a), print(b) 

この

は、構文エラーを持っているでしょう。

if True: 
    a=0.5; b=0.5 
    print(a), print(b) 

カンマはprintで動作しますが、割り当てられないのはなぜですか?

+1

'a = 0.5、b = 0.5'を' a、b = 0.5、0.5'に変更します。 ';'は、文の終わりを示します。したがって、 'a = 0.5;'は 'b = 0.5'とは別の文です。 – Abdou

答えて

1

Pythonのコンマは、関数の引数やタプルやリストの作成に使用されます。この

>>> print(a), print(b) 
0.5 
0.5 
(None, None) 

(None, None)の実行時にコマンドライン出力に気づいたら2つのprint文の出力値から作成されたタプルはコンマで一緒に入れています。 None, None(None, None)と同じです。

印刷された0.5の値は、printの副作用です。印刷時に画面上に表示されますが、実際には戻り値はNoneです。

また

>>> a=0.5, 0.6 
>>> print(a) 
(0.5, 0.6) 

aの効果を通知はコンマがあるので等号次の2つの値の両方が割り当てられています。そして今、我々は解決策に近づいている、これらの2つのステートメントは同一です:

a=0.5, b=0.5 
a = (0.5, b) = 0.5 

のでPythonは前の文の値にそれができない最後の0.5を割り当てようとします。基本的に文法エラーを与えるリテラル割り当てを行う:

>>> (0.6, 0.7) = 0.5 
SyntaxError: can't assign to literal 
2

簡単に言えば、カンマをPythonで使用してタプルを展開します。 print関数でカンマを使用すると、実際には2つのtuplesが使用されます。セミコロンは、JSやC++などの言語で使用されるセパレータとして使用され、改行と同等です。リテラルは本質的に変数の反対です。固定値または固定値。

2つの割り当てを1行にまとめたい場合は、何ができるのですか。 a, b = 0.5, 0.5

しかし、あなたの場合は、変数をそのように割り当てることができます。 a = b = 0.5

関連する問題