Python3-python-basic-syntax

提供:Dev Guides
移動先:案内検索

Python 3-基本構文

Python言語には、Perl、C、およびJavaと多くの類似点があります。 ただし、言語間には明確な違いがあります。

最初のPythonプログラム

さまざまなプログラミングモードでプログラムを実行してみましょう。

インタラクティブモードプログラミング

スクリプトファイルをパラメーターとして渡さずにインタープリターを呼び出すと、次のプロンプトが表示されます-

$ python

Python 3.3.2 (default, Dec 10 2013, 11:35:01)
[GCC 4.6.3] on Linux
Type "help", "copyright", "credits", or "license" for more information.
>>>

On Windows:

Python 3.4.3 (v3.4.3:9b73f1c3e601, Feb 24 2015, 22:43:06) [MSC v.1600 32 bit (Intel)] on win32
Type "copyright", "credits" or "license()" for more information.
>>>

Pythonプロンプトで次のテキストを入力し、Enterキーを押します-

>>> print ("Hello, Python!")

古いバージョンのPython(Python 2.x)を実行している場合、 inprint 関数としての括弧の使用はオプションです。 これは、次の結果を生成します-

Hello, Python!

スクリプトモードプログラミング

スクリプトパラメーターでインタープリターを呼び出すと、スクリプトの実行が開始され、スクリプトが終了するまで続行されます。 スクリプトが終了すると、インタープリターはアクティブではなくなります。

スクリプトで簡単なPythonプログラムを作成しましょう。 Pythonファイルの拡張子は .py です。 test.pyファイルに次のソースコードを入力します-

print ("Hello, Python!")

Pythonインタープリターが PATH 変数に設定されていると仮定します。 今、次のようにこのプログラムを実行してみてください-

*Linux* の場合
$ python test.py

これは、次の結果を生成します-

Hello, Python!
*Windows*
C:\Python34>Python test.py

これは、次の結果を生成します-

Hello, Python!

LinuxでPythonスクリプトを実行する別の方法を試してみましょう。 ここに変更されたtest.pyファイルがあります-

#!/usr/bin/python3
print ("Hello, Python!")

Pythonインタープリターが/usr/binディレクトリーで使用可能であると想定しています。 今、次のようにこのプログラムを実行してみてください-

$ chmod +x test.py     # This is to make file executable
$./test.py

これは、次の結果を生成します-

Hello, Python!

Python識別子

Python識別子は、変数、関数、クラス、モジュール、またはその他のオブジェクトを識別するために使用される名前です。 識別子は、文字A〜Zまたはa〜zまたはアンダースコア(_)で始まり、その後にゼロ個以上の文字、アンダースコア、および数字(0〜9)が続きます。

Pythonでは、識別子内で@、$、%などの句読点文字を使用できません。 Pythonは、大文字と小文字を区別するプログラミング言語です。 したがって、 Manpowermanpower はPythonの2つの異なる識別子です。

Python識別子の命名規則は次のとおりです-

  • クラス名は大文字で始まります。 他のすべての識別子は小文字で始まります。
  • 単一の先頭アンダースコアで識別子を開始することは、識別子がプライベートであることを示します。
  • 2つの先頭のアンダースコアで識別子を開始することは、強力なプライベート識別子を示します。
  • 識別子の末尾に2つの下線が付いている場合、その識別子は言語定義の特別な名前です。

予約語

次のリストは、Pythonキーワードを示しています。 これらは予約語であり、定数や変数、またはその他の識別子名として使用することはできません。 すべてのPythonキーワードには小文字のみが含まれます。

and exec not
as finally or
assert for pass
break from print
class global raise
continue if return
def import try
del in while
elif is with
else lambda yield
except

行とインデント

Pythonは、クラスと関数の定義またはフロー制御のコードブロックを示すために中括弧(\ {})を使用しません。 コードのブロックは、行のインデントによって示され、厳密に強制されます。

インデント内のスペースの数は可変ですが、ブロック内のすべてのステートメントは同じ量だけインデントする必要があります。 たとえば-

if True:
   print ("True")

else:
   print ("False")

ただし、次のブロックはエラーを生成します-

if True:
   print ("Answer")
   print ("True")

else:
   print "(Answer")
   print ("False")

したがって、Pythonでは、同じ数のスペースでインデントされたすべての連続行がブロックを形成します。 次の例には、さまざまなステートメントブロックがあります-

-この時点でロジックを理解しようとしないでください。 中括弧がない場合でも、さまざまなブロックを理解していることを確認してください。

#!/usr/bin/python3

import sys

try:
   # open file stream
   file = open(file_name, "w")

except IOError:
   print ("There was an error writing to", file_name)
   sys.exit()
print ("Enter '", file_finish,)
print "' When finished"

while file_text != file_finish:
   file_text = raw_input("Enter text: ")

   if file_text == file_finish:
      # close the file
      file.close
      break
   file.write(file_text)
   file.write("\n")
file.close()
file_name = input("Enter filename: ")

if len(file_name) == 0:
   print ("Next time please enter something")
   sys.exit()

try:
   file = open(file_name, "r")

except IOError:
   print ("There was an error reading file")
   sys.exit()
file_text = file.read()
file.close()
print (file_text)

複数行ステートメント

Pythonのステートメントは通常、新しい行で終わります。 ただし、Pythonでは、行を継続する必要があることを示すために、行継続文字(\)を使用できます。 たとえば-

total = item_one + \
   item_two + \
   item_three

[]、\ {}、または()の括弧内に含まれるステートメントでは、行継続文字を使用する必要はありません。 たとえば-

days = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']

Pythonでの引用

Pythonは、同じタイプの引用符が文字列を開始および終了する限り、文字列リテラルを示すために単一( ')、二重( ")および三重(' または" "")引用符を受け入れます。

三重引用符は、複数の行に文字列を広げるために使用されます。 たとえば、以下はすべて合法です-

word = 'word'
sentence = "This is a sentence."
paragraph = """This is a paragraph. It is
made up of multiple lines and sentences."""

Pythonのコメント

文字列リテラル内にないハッシュ記号(#)は、コメントの始まりです。 #の後の物理行の最後までのすべての文字はコメントの一部であり、Pythonインタープリターはそれらを無視します。

#!/usr/bin/python3

# First comment
print ("Hello, Python!") # second comment

これは、次の結果を生成します-

Hello, Python!

あなたは、ステートメントまたは式の後に同じ行にコメントを入力することができます-

name = "Madisetti" # This is again comment

次のように複数の行をコメントすることができます-

# This is a comment.
# This is a comment, too.
# This is a comment, too.
# I said that already.

次の三重引用符で囲まれた文字列もPythonインタープリターによって無視され、複数行のコメントとして使用できます。

This is a multiline
comment.

空白行を使用する

コメントが含まれる可能性がある空白のみを含む行は空白行と呼ばれ、Pythonでは完全に無視されます。

対話型インタープリターセッションでは、空の物理行を入力して複数行ステートメントを終了する必要があります。

ユーザーを待っています

プログラムの次の行は、プロンプトと、「終了するにはEnterキーを押してください」という文を表示し、ユーザーがアクションを実行するのを待ちます-

#!/usr/bin/python3

input("\n\nPress the enter key to exit.")

ここでは、実際の行を表示する前に「\ n \ n」を使用して2つの新しい行を作成します。 ユーザーがキーを押すと、プログラムは終了します。 これは、ユーザーがアプリケーションを終了するまでコンソールウィンドウを開いたままにするための便利な方法です。

単一行の複数のステートメント

セミコロン(;)を使用すると、新しいコードブロックを開始するステートメントがない場合、1行で複数のステートメントを使用できます。 これはセミコロンを使用したサンプルの切り取りです-

import sys; x = 'foo'; sys.stdout.write(x + '\n')

スイートとしての複数のステートメントグループ

単一のコードブロックを作成する個々のステートメントのグループは、Pythonでは*スイート*と呼ばれます。 if、while、def、classなどの複合または複雑なステートメントには、ヘッダー行とスイートが必要です。

ヘッダー行はステートメント(キーワード)で始まり、コロン(:)で終わり、その後にスイートを構成する1つ以上の行が続きます。 たとえば-

if expression :
   suite
elif expression :
   suite
else :
   suite

コマンドライン引数

多くのプログラムを実行して、実行方法に関する基本情報を提供できます。 Pythonでは、- h でこれを行うことができます-

$ python -h
usage: python [option] ... [-c cmd | -m mod | file | -] [arg] ...
Options and arguments (and corresponding environment variables):
-c cmd : program passed in as string (terminates option list)
-d     : debug output from parser (also PYTHONDEBUG=x)
-E     : ignore environment variables (such as PYTHONPATH)
-h     : print this help message and exit

[ etc. ]

また、さまざまなオプションを受け入れるようにスクリプトをプログラムすることもできます。 link:/python3/python_command_line_arguments [コマンドライン引数]は高度なトピックです。 それを理解しましょう。