ご存知のように、Pythonは構文に自由度があり、使いやすく、実装しやすい言語です。
そのため、初心者でも効率的に設計するためのアプリケーションなどを作るのに最適です。
しかし、他の言語と同様に、コード全体が実行され、依存する基本的なルールや規則もいくつか持っています。
そこで、この記事では、それらを学ぶことにしましょう。
これは、私たちのプログラミングの面でも重要なことです。
PythonとPEP8入門
それでは、Pythonの特徴を見ていきましょう。
- 1.オブジェクト指向
- マルチパラダイム
- クロスプラットフォーム
Pythonの最大の特徴は、インタープリタ上で動作することです。
これは、コードを一行ごとに実行し、そして実行します。
PEP8 のエッセンス
Python Enhancement Proposals (PEP) は、最高の Python コードを書く方法を教えてくれる公式の本、またはルールのセットだと言えます。
また、プログラミング中の制限ややってはいけないことのセットも提供されています。
そのうちのいくつかは次のとおりです。
-
- モジュールは短い小文字の名前であってはならない。
-
- クラス名はCapWordsスタイルでなければならない。
-
- 変数名、関数名には、小文字とアンダースコアを使用します。
-
- 定数は CAPITAL_WITH_UNDERSCORES で記述します。
-
- パラメータと演算子の間には十分なスペースを入れて、コードを読みやすくしてください。
PEPの情報を得るには、Pythonのシェルを開いて、以下のコマンドを入力します。
>>> import this
|
結果は、以下の通りです。
The Zen of Python, by Tim Peters Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex .
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts. Special cases aren't special enough to break the rules.
Although practicality beats purity. Errors should never pass silently.
Unless explicitly silenced. In the face of ambiguity, refuse the temptation to guess. There should be one - - and preferably only one - - obvious way to do it.
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.
Although never is often better than * right * now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea - - let's do more of those!
|
Pythonにおけるコロンの重要性
ですから、いくつかのインタプリタ言語では、中括弧は重要ではありません。
むしろ「コロン」を使って作業するのです。
JavaScriptやRubyなどの他の言語と異なり、Pythonはコロンが重要な構文のほとんどを備えています。
以下はその一覧です。
- リストスライス
- 文字列のスライス
- キーと値のペアを挿入するための辞書で。
- 関数宣言
- ループ宣言
- 条件付きステートメント
- 関数の可読性を高めるために
- クラス宣言。
注:リストや文字列では0から始まるインデックスを使用します。
詳しくは、こちらの記事(https://www.askpython.com/python/list/negative-indexing)をご覧ください。
1. リストのスライシング
リストはPythonで実装・学習する上で重要なデータ構造です。
これは動的な配列のようなもので、複数のデータ型の要素を挿入することができます。
リストでは、特定の要素を取得するためにコロンを使用します。
これらはインデックス番号で動作します。
つまり、インデックスの位置に関する要素を取得するために使用します。
要素を取得する構文
a = [ 0 : n - 1 ] # indexing in lists starts from zero till n -1
|
例えば、以下の様になります。
>>> a = [ 5 , - 9 , 8 , 33 , 4 , 64 ] # declaring a list
>>> a[:] # retrieving all the elements
[ 5 , - 9 , 8 , 33 , 4 , 64 ]
>>> a[ 2 : 3 ] # retrieing the elements from third index and ignoring the fourth index
[ 8 ]
>>> a[ 4 :] # retrieving the elements above fifth till last index
[ 4 , 64 ]
>>> a[ 1 :] # retrieving the elements above second index
[ - 9 , 8 , 33 , 4 , 64 ]
|
2. 文字列のスライシング
文字列はPythonのもう一つのデータ型で、長い文章の集合を引用符で囲むことを可能にします。
古いプログラミングパラダイムでは、文字列は文字の並びです。
Pythonは文字列から1つの文字を取り出すのに同じアプローチを取ります。
それらはイミュータブル(編集不可)ですが、文字を取り出すことができます。
メモリ上では、文字列は文字配列に格納されています。
そのため、文字を取り出すにはコロンが使われます。
こちらもお読みください。
文字列を取得する構文
s = [ 0 : n - 1 ] # indexing in strings starts from zero till n -1
|
例えば、以下の様になります。
>>> s = "abcdefgh"
>>> s[ 2 : 4 ] # fetch characters from third till fifth index
'cd' >>> s[:: - 1 ] # reverse the string
'hgfedcba' >>> s[: - 2 ] # print the string ignoring the second and last characters
'abcdef' >>> s[ 1 : 5 ] # print the elements from second till
'bcde' |
3. キー・バリュー・ペアを挿入するためのディクショナリで
Pythonの辞書は、key-valueペアの順序不同のコレクションです。
Javaにおけるハッシュマップのような基本的なデータ構造の1つです。
しかし、その構文宣言はもっと異なっています。
辞書を宣言する構文
d = {key_1 : value_1, key_2 : value_2, key_3 : value_3, ..., key_N : value_N}
|
ここでは、コロンが重要な意味をもっていることがわかる。
この記号がなければ、Pythonでは辞書は存在できません。
例えば、以下の様になります。
>>> d = { "a" : 1 , "b" : 2 , "c" : 3 , "d" : 4 } # declaring a dictionary
|
4. 関数の宣言
関数の一般的な構文には、コロンが含まれます。
これは、Pythonが関数の下のコードのブロックを保持するために、中括弧「{ }」の代わりにインデント(空のコードスペース)を使用するためです。
関数と括弧の後に、関数内のコードを書き始めるためにコロンを使用する必要があります。
構文は以下の様な感じです。
def func_name(param_1, .., param_2): - > colon used here
# fuction code lies below colon and is considered as its code body
return # value
|
5. ループの宣言
Pythonにおけるループとは、あるコードが特定の条件を満たすまで連続的に実行する文のことです。
そのため、for()やwhile()ループを実行するためには、コロンを使用します。
コロン以下のすべてのコードは、適切なインデントがなされている場合にのみ、ループの一部とみなされます。
例えば、以下の様になります。
for i in range ( 4 ): # -> colon is used here
print (i)
#Output: # 0 # 1 # 2 # 3 |
このように、コロン記号の下のコードは0から3までの数字を出力していることがわかりました。
i = 0
while i ! = 5 : # -> colon is used here
i + = 1
print (i)
# output # 1 # 2 # 3 # 4 # 5 |
6. 条件文の使用
条件文は、特別なコードブロックです。
これらは、その中の式が真と評価されたときに、コードのブロックを実行する決定文です。
その中にもコロンを使用します。
これらは条件の後に置かれ、インタプリタはインデントされたコードが条件ブロックの下にあることを認識します。
if condition: # -> colon is used here
# code body
else : # -> colon is used here
# code body
|
7. 関数の可読性を上げるために
これはpythonのトピックを多少進めています。
初心者の方は無視していただいて結構です。
静的型付けプログラミング言語では、変数や関数のデータ型と戻り値の型を指定する必要がありますが、Pythonでも同じことができますが、異なる種類の構文で指定します。
例えば、関数を宣言するときに、データ型を明示的に指定する必要があるとしましょう。
これを行うには、簡単な方法があります。
-
- 関数内でパラメータを宣言するとき、コロンでデータ型を指定し、その後にパラメータ名を指定します。
-
- 関数が何を返すかを示すには、括弧の後に矢印演算子 (->) を使用してデータ型を挿入します。
def add(a : int , b : int ) - > int :
c = a + b
print (c)
return c
add( 3 , 4 )
# outputs 7 |
パラメータ名とデータ型の間には、テコロンを使用します。
8. クラス宣言のために
PythonはOOP言語です。
そのため、クラスを宣言するためには、コロンを使う必要があります。
コロンが変数のスコープとクラスの関数を決定します。
これは、クラスの実体がコロンの下にあることをインタープリタに知らせるためです。
以下はその例です。
コード
class Sample:
def __init__( self , a, b):
self .a = a
self .b = b
def printVal( self ):
print ( self .a, self .b)
sample = Sample( 3 , 4 )
sample.printVal() # outputs: 3, 4 |
というわけで、このクラスでは、コロンを挿入します。
そのあと、スペース4つ分の字下げをします。
こうすることで、すべてがクラス・スコープの下にあることを確認できます。
では、わかりやすくするために、コンストラクタの⇄メソッドとprintVal()メソッドを宣言します。
コロンの使用で起こるエラーとよくある間違い
関数やループ、コロンが必要なコードのブロックを宣言するとき、従わなければならない重要なルールがあります。
これを守らないと、うまくいかず、エラーになってしまいます。
コロンがあるときは、必ずインデント(空白)を入れてください。
これは、その親コードの下に続くコードのスコープを定義するものです。
最近のコードエディターには、自動インデントの設定が組み込まれています。
しかし、メモ帳を使う場合は、もっと注意が必要です。
例-関数を使う場合。
def sayHello():
print ( "Hello world" )
sayHello() |
例:forループ。
for i in range ( 0 , 3 ):
print (I)
|
例:if条件。
if (i % 2 = = 0 ):
print (i)
|
結果を出力すると、以下の様になります。
IndentationError: expected an indented block |
まとめ
このように、コロンはPythonの構文ツリーにおいて重要な、あるいは心臓部であると考えることができます。
もし、コロンが1つでも欠けていたら、大変なことになることを忘れないでください。
Pythonプログラミングの初心者は、この記事をよく読むことをお勧めします。