web-dev-qa-db-ja.com

Pythonの式と文の違いは何ですか?

Pythonでは、式と文の違いは何ですか?

278
wassimans

に含まれるのは 識別子リテラル および 演算子 、演算子には算術演算子およびブール演算子が含まれます。関数 call operator() the subscription operator[]などで、Pythonオブジェクトのようなある種の "値"に減らすことができます。例:

3 + 5
map(lambda x: x*x, range(10))
[a.x for a in some_iterable]
yield 7

ステートメント( 12 を参照)は、一方で、行を構成することができるすべてです。または数行のPythonコード。式も文であることに注意してください。例:

# all the above expressions
print 42
if x: do_y()
return
a = 7
211
Sven Marnach

- 私の辞書から:

式:数学量を共同で表す記号の集まり。円周の式は2πrです。

一般的な用語では、式は少なくとも1つの値を生成します。

Pythonでは、式は広範囲にカバーされています Python言語リファレンス 一般に、Pythonの式は構文的に有効な AtomsPrimaries の組み合わせで構成されています。そして Operators

WikipediaのPython表現

式の例

リテラル および 演算子 および 組み込み関数 との構文的に正しい組み合わせ、またはユーザー作成関数の呼び出し

>>> 23
23
>>> 23l
23L
>>> range(4)
[0, 1, 2, 3] 
>>> 2L*bin(2)
'0b100b10'
>>> def func(a):      # Statement, just part of the example...
...    return a*a     # Statement...
... 
>>> func(3)*4
36    
>>> func(5) is func(a=5)
True

ウィキペディアからの声明

コンピュータプログラミングでは、ステートメントは命令型プログラミング言語の最小の独立した要素と考えることができます。プログラムは、一連の1つ以上のステートメントによって形成されます。ステートメントは内部構成要素(例えば式)を持つことになる。

WikipediaからのPythonのステートメント

一般的な用語では、ステートメントは何かを行い、多くの場合は式(または他のステートメント)で構成されます。

Python言語リファレンスは Simple StatementsCompound Statements を広範囲にカバーしています。

「文は何かをする」と「表現は価値を生み出す」の区別はあいまいになる可能性があります。

  • List Comprehensions は "式"と見なされますが、それらにはループ構造があり、それゆえにやはりやることがあります。
  • ifは通常if x<0: x=0のようなステートメントですが、式であるx=0 if x<0 else 1のように 条件式 を持つこともできます。 Cのような他の言語では、この形式はこのような演算子と呼ばれますx=x<0?0:1;
  • 関数を書くことであなた自身の式を書くことができます。 def func(a): return a*aは使用時には式ですが、定義時にはステートメントで構成されます。
  • Noneを返す式はPythonのプロシージャです。def proc(): pass構文的には、式としてproc()を使用できますが、おそらくこれはバグです...
  • Pythonは、CがExpressionとStatementの違いに基づいているというよりも少し厳密です。 Cでは、任意の式は正しい文です。あなたはfunc(x=2);を持つことができますそれは式またはステートメントですか? ( Answer:副作用のあるステートメントとして使用されている式です。func(x=2)という形式はPythonでは無効です(または少なくともfunc(a=3)は別の意味を持ち、名前付き引数aを3に設定します)
103
dawg

これはPythonとは関係ありませんが。

expressionは値に評価されます。 statementは何かをします。

>>> x = 1
>>> y = x + 1     # an expression
>>> print y       # a statement (in 2.x)
2
62
user225312

ステートメントはアクションやコマンドを表します。例えばprintステートメント、assignmentステートメント

print 'hello', x = 1

式は、結果値を生成する変数、演算、および値の組み合わせです。

5 * 5 # yields 25

最後に、式文

print 5*5
9
eosimosu
  1. 式は値を返すステートメントです。そのため、代入の右側、またはメソッド呼び出しのパラメータとして使用できる場合は、式です。
  2. 文脈によっては、式と文の両方になるコードもあります。言語には、あいまいな場合に両者を区別する手段があります。
4
Steven Spungin

式は、"1+3""foo = 1+3"のように、値に減らすことができるものです。

確認は簡単です。

print foo = 1+3

うまくいかなければそれはステートメントであり、そうであればそれは式です。

別のステートメントは次のようになります。

class Foo(Bar): pass

値にすることはできませんので。

3
Flavius

式は何かですが、文は何かをします。
式も文ですが、戻り値が必要です。

>>> 2 * 2          #expression
>>> print(2 * 2)     #statement

PS:インタプリタは常にすべての式の値を表示します。

3
donald jiang

ステートメント:

ステートメントは、何かをするアクションまたはコマンドです。例:If-Else、ループ...など

val a: Int = 5
If(a>5) print("Hey!") else print("Hi!")

式:

式は、値、演算子、リテラルを組み合わせたもので、何かを生み出します。

val a: Int = 5 + 5 #yields 10
0
Raja Shekar

式:

  • 式はobjectsoperatorsを組み合わせて形成されます。
  • 式は値を持ち、それは型を持ちます。
  • 単純式の構文は次のとおりです。<object><operator><object>

2.0 + 3は、5.0に評価される式で、それに関連付けられたタイプfloatを持ちます。

ステートメント

文は式で構成されています。複数行にまたがることができます。

0
ssokhey

ステートメントにキーワードが含まれています。

式にキーワードが含まれていません。

printはキーワードであるため、print "hello"はステートメントです。

"hello"は式ですが、リスト圧縮はこれに反対です。

以下は式文であり、リスト内包表記がなくても当てはまります。

(x*2 for x in range(10))
0
abifromkerala

簡単に言うと、ステートメントは1つ以上の式で構成され、式は1つ以上の識別子(名前)、リテラル、および演算子で構成されます。

0
FouadDev