web-dev-qa-db-ja.com

Pythonのステートメントと関数の違いは何ですか?

編集:特にPythonの違いに主に関心があるため、提案された複製は私の質問の答えにはなりません。提案された複製は、この質問よりもはるかに広いです。

私は最近Pythonを学び始めました。私は現在 "Learn Python the Hard Way"を読んでいます。アドホックなプログラミングの経験はありますが、今回は最初からすべてをゼロから学びます。

この本では、最初のレッスンの1つがprintに関するものであり、著者はPython 2.7での使用に関するさまざまな指示を提供しています。たとえば、

print "This is fun."

プログラミングの観点から、ここではprintが技術的に何と呼ばれているのか疑問に思いました。 一部の研究でこれが見つかった、PEP-3105

その場合、printを関数にするために作成されます:

Printステートメントは、Guidoの "Python Regrets"プレゼンテーション 1 など、Python 3000で削除される疑わしい言語機能のリストに長く登場しました。そのため、このPEPの目的は新しいものではありませんが、Python開発者の間で大きな論争になる可能性があります。

したがって、printはPython 2.7のステートメントであり、Python 3の関数です。

しかし、statementfunctionの違いの簡単な定義を見つけることができませんでした。私は this をPythonを発明した人も見つけました、Guido van Rossumで、なぜ作るのが良いのかを説明していますステートメントの代わりに関数を出力します。

私が読んだことから、関数はパラメータを取り、値を返すコードであるように見えます。しかし、python 2.7ではこれをprintしていませんか?文字列を受け取り、連結された文字列を返すのではないですか?

Pythonのステートメントと関数の違いは何ですか?

13
Gary

ステートメントは構文構造です。関数はオブジェクトです。 defのような関数を作成するステートメントがあります:

def Spam(): pass

したがって、ステートメントは、Pythonに関数を作成させたいことを示す方法の1つです。それ以外は、それらの間にはあまり関係がありません。

Python=のステートメントは、作成したコードのチャンクです。これは実際のものよりも理論上の概念です。コードを作成するときに正しい構文を使用すると、ステートメントが実行されます( 「評価済み」)。誤った構文を使用すると、コードでエラーがスローされます。ほとんどの場合、「ステートメント」と「式」は同じ意味で使用されます。

おそらく、ステートメントと関数の違いを確認する最も簡単な方法は、いくつかのサンプルステートメントを確認することです。

5 + 3 # This statement adds two numbers and returns the result
"hello " + "world" # This statement adds to strings and returns the result
my_var # This statement returns the value of a variable named my_var
first_name = "Kevin" # This statement assigns a value to a variable.
num_found += 1 # This statement increases the value of a variable called num_found
print("hello") # This is a statement that calls the print function
class User(BaseClass): # This statement begins a class definition
for player in players: # This statement begins a for-loop
def get_most_recent(language): # This statement begins a function definition
return total_count # This statement says that a function should return a value
import os # A statement that tells Python to look for and load a module named 'os'

# This statement calls a function but all arguments must also be valid expressions.
# In this case, one argument is a function that gets evaluated
mix_two_colors(get_my_favorite_color(), '#000000')

# The following statement spans multiple lines and creates a dictionary
my_profile = {
  'username': 'coolguy123' 
}

次に、無効なステートメントの例を示します。

first+last = 'Billy Billson'
# Throws a Syntax error. Because the plus sign is not allowed to be part of a variable name.

Pythonでは、ネストされたステートメントの場合を除いて、各ステートメントを1行に置く傾向があります。ただし、CやJavaなどの他のプログラミング言語では、コロン(;)で区切られている限り、必要なだけ多くのステートメントを1行に置くことができます。

Python2とPython3の両方で、あなたは呼び出すことができます

print("this is a message") 

そして、文字列を標準出力に出力します。これは、どちらも文字列引数を取り込んで出力する、printと呼ばれる関数が定義されているためです。

Python2では、関数を呼び出さずに、標準出力に出力するステートメントを作成することもできました。このステートメントの構文は、Wordの印刷物から始まり、その後に何が印刷されたというものでした。 Python3では、これはもはや有効なステートメントではありません。

print "this is a message"
0
Kevin