回答:
式には、識別子、リテラル、演算子のみが含まれます。演算子には算術演算子とブール演算子、関数呼び出し演算子 ()
、サブスクリプション演算子 []
などが含まれ、何らかの「値」に縮小できます。これは、任意のPythonオブジェクトにすることができます。例:
3 + 5
map(lambda x: x*x, range(10))
[a.x for a in some_iterable]
yield 7
ステートメント(参照 1、一方、2)は、Pythonコードの1行(または数行)を構成できるすべてのものです。式もステートメントであることに注意してください。例:
# all the above expressions
print 42
if x: do_y()
return
a = 7
print("Hello world!")
または)my_list.append(42)
。
a = yield 7
は有効なのでyield 7
、式です。ずっと前に、yield
ステートメントとして導入されましたが、それはPEP 342の表現に一般化されました。
式 -から新オックスフォード米語辞典:
式:数学共同で量を表す記号のコレクション:円周の式は2πrです。
大まかに言うと、式は少なくとも1つの値を生成します。
Pythonでは、式はで広く覆われているのPython言語リファレンスで一般的な、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つ以上のステートメントのシーケンスによって形成されます。ステートメントには内部コンポーネント(式など)があります。
総一般的には:ステートメントは、何かをし、多くの場合、式(またはその他の文)で構成されています
Python言語リファレンスでは、単純なステートメントと複合ステートメントを幅広くカバーしています。
ただし、「ステートメントは何かを行う」と「式は値を生成する」の区別がぼやけることがあります。
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()
、式として使用できますが、おそらくバグです...func(x=2);
はそれを式またはステートメントにすることができますか?(回答:副作用のあるステートメントとして使用される式。)Pythonののx=2
関数呼び出し内の代入ステートメントはfunc(x=2)
、名前付き引数a
を2に設定しfunc
、Cの例よりも制限されています。これはPythonとは関係ありませんが:
expression
値を評価します。A statement
が何かをします。
>>> x + 2 # an expression
>>> x = 1 # a statement
>>> y = x + 1 # a statement
>>> print y # a statement (in 2.x)
2
somelist.append(123)
。ほとんどの関数呼び出しは、本当に。
ステートメントは、アクションまたはコマンドを表します(例:印刷ステートメント、割り当てステートメント)。
print 'hello', x = 1
式は、変数、演算、および結果の値を生成する値の組み合わせです。
5 * 5 # yields 25
最後に、式ステートメント
print 5*5
式は、たとえば、"1+3"
または"foo = 1+3"
。
確認は簡単です:
print foo = 1+3
機能しない場合はステートメントであり、機能しない場合は式です。
別のステートメントは次のようになります:
class Foo(Bar): pass
値に還元できないためです。
a = b = expr
、特殊なケースとして許可されています)。Cからさらにインスピレーションを得ている言語では、そうです。
class Foo(bar):
完全なステートメントではなく、ステートメントの始まりです。
foo = 1+3
式ではありません。これはステートメント(正確には割り当て)です。一部1+3
は式ですが。
ステートメント:
ステートメントは、何かを行うアクションまたはコマンドです。例:If-Else、Loops..etc
val a: Int = 5
If(a>5) print("Hey!") else print("Hi!")
式:
式は、値、演算子、およびリテラルの組み合わせであり、何かを生成します。
val a: Int = 5 + 5 #yields 10
ステートメントにキーワードが含まれています。
式にキーワードが含まれていません。
print "hello"
はprint
キーワードなので、ステートメントです。
"hello"
式ですが、リストの圧縮はこれに反しています。
以下は式ステートメントであり、リストを理解していなくても当てはまります。
(x*2 for x in range(10))
x = 1
完全にすばらしいステートメントですが、キーワードは含まれていません。
is
キーワードですx is y
が、必ずしもステートメントである必要はありません(一般的には単なる式です)。
Pythonプログラムの状態を変更する可能性のあるステートメントがいくつかあります:変数の作成または更新、関数の定義など。
そして、式はある値を返すだけで、関数のグローバル状態またはローカル状態を変更できません。
しかし、今、私たちは:=
エイリアンです!
Pythonは式を「式ステートメント」と呼んでいるため、問題はおそらく完全に形づくられていません。
ステートメントは、Pythonで実行できるほとんどすべてのことで構成されています。値の計算、値の割り当て、変数の削除、値の出力、関数からの戻り、例外の発生などです。完全なリストは次のとおりです:http:// docs.python.org/reference/simple_stmts.html#
式ステートメントは、値を生成するための呼び出し関数(たとえば、math.cos(theta) ")、演算子(たとえば、" 2 + 3 ")などに制限されています。