初めに
今回は、最近勉強しているpythonの基礎について、メモしていた内容があったので投稿します。
私自身、IT業界に入って1年経たないくらいの新人です。
今後プログラミングを学ばれる方々の役に立てばいいなと思っております。
メモ形式なので、見づらい部分あるかもしれませんがご了承ください。
-
基礎
-
論理演算子はjavaやphpと同じように「+、ー、/、*、%」を使用する。
-
ただし、割り算(a / b)の結果がfloat型になることに注意
- 結果を整数にする場合は(a // b)とする
-
出力は、print()メソッドを使用する
-
-
型について
- 初期化時にその変数の型が決定し、出力や計算、再代入する際には初期化時の型でなければならない
- 型のキャストはint() ⇒ 数字へのキャスト、str() ⇒ 文字列へのキャストを行う(引数にキャストする変数)
-
変数について
- 変数の定義時は、左辺に変数名のみを記述し、右辺に初期化する値を記述する
- 再代入は他言語と同じで、変数名=再代入する値で行う
-
リストについて
- リストは配列と同じと考えるとイメージしやすい
-
**names = [’name1’, ‘name2’]
リストは大括弧を使用する** - インデックスはほかの言語と同じく、0から始まる
- 要素の追加はappendメソッドを使用する
- 更新は、インデックスを指定し、再代入する
-
辞書について
- PHPの連想配列やJavaのMapなどとほぼ同じ
- キーと値が1対1になっており、キー名で管理する
items = {'item1': 10, 'item2': 20}
辞書の場合は中括弧を使用し、キーと値の間はコロンを使用する- 更新は存在するキーを指定した再代入で行う
- 要素の追加は、存在しないキー名を指定した代入で行う
-
条件分岐について
- pythonでの条件分岐はif文で、if文のスコープはインデントによって判別される ⇒ インデントがある部分がif文の中身になる
- if、else if、elseのそれぞれの書き方は ↓
money = 0 if a > 0: # 条件式の最後にコロンを打つ!! # インデントを下げてif文のスコープを管理する money = 900 elif a == 0: # コロンを打つ # インデントを下げる money = 1000 else: # elseの後にもコロンを打つ # インデント money = 1500
- else if が、elifとなっていることに注意
-
繰り返し処理について
-
for文、while文の両方が存在する
-
for文について
- 書き方 ↓
for item in items: # for文の条件式の最後にもコロンを打つ。inの左側に取り出した要素を代入する変数、右側に繰り返し処理を行う変数 # インデントを下げてfor文のスコープを管理 print(item)
-
while文について
- while文はリストや辞書を定義していない状態で使われていた。書き方 ↓
x = 10 while x > 0: # while文の条件式も最後にコロンを打つ # インデントを下げてスコープを管理 print(x) # while文なので、この場合は最後に行う処理を書かないと無限ループになるよ! x -= 1
-
pythonでのfor文は、Javaの拡張for文や、PHPのforeachに近いと感じた。代わりにwhileがfor文の役割をしてるような感じ
-
-
コンソールで入力して、その値を取得して演習は進んでいた
- 入力値の取得は、input()を使用して行う
- 引数は、入力の際に表示される文言。(例)
input(”値を入力してください:”)
- returnは文字列で返る
-
関数の定義について
- 定義のやり方
def 関数名(): # 関数を定義する際にもコロンを最後につける。小括弧は引数を記述する # インデントを下げて実際に行う処理を書いていく print("Hello World!!") 関数名() # 関数の呼び出し
- 関数を定義するときのdefはdefineの略で、「定義する」という意味を持つ
def print_hello(name): # 引数の定義は仮引数名 print("Hello" + name) print_hello("sato") # string OK name = "tanaka" print_hello(name) # variable OK def print_order(food, drink) # 複数の引数をとる際はカンマで区切る # 初期値の設定もできる。初期値の設定は、引数がなかった場合に使用され、引数が存在する場合は渡された引数を使用する def no_variable(last_name, first_name = 'suzuki')
- 戻り値はreturn 戻り値となるように記述する。
- return は関数内の処理を終了させる役割もある ⇒ return以降の処理は実行されない!
-
真偽値について
-
False、True で記述する
- 頭文字だけ大文字で、残りは小文字なので注意!
-
False、True で記述する
-
モジュールについて
- pythonにおけるモジュールとは、pythonのコードが書かれたファイルを指す
- 別ファイルをモジュールとして読み込むことで、関数などを利用することができる
- モジュールの読み込みはimport を使用して行う
# main.py、utils.pyが存在し、 # main.pyでutils.pyをモジュールとして呼び出したいとき import utils # import の後にモジュール名(ファイル名から.py拡張子を取り除いたもの)を記述して行う # 関数の呼び出しは、モジュール名.関数名()と記述する utils.print_hello()
-
ライブラリについて
-
pythonでは、あらかじめ多くのライブラリが用意されており、モジュール同様importを使用して呼び出し、利用することができる
⇒ ライブラリとは、あらかじめ用意されているモジュールのこと
-
ライブラリもモジュールのように「ライブラリ名.関数名()」で使用する
-
ライブラリ例
- math => 複雑な演算を行うためのモジュール
- random => ランダムな値を生成するためのモジュール
- datetime => 日付や時間データの操作するためのモジュール
-
-
クラスについて
- クラスの概念は、ほかの言語同様に設計書という位置づけになる
- インスタンスを生成し、利用するやり方も同じ
- クラスの中で定義する関数をメソッドという
-
特にインスタンスに対して呼び出すメソッドをインスタンスメソッドという
- メソッド、インスタンスメソッドは、定義する際に第一引数を「self」にしなければならない
-
__init__(self)
インスタンスメソッドについて- このインスタンスメソッドはインスタンスの生成時に自動で呼び出される
- これまでのコンストラクタの働きを持つ認識でok
- インスタンスの生成時に、引数を渡すことができる
# classの生成方法とインスタンスの生成 class MyClass(): # クラスの場合も、最後にコロンを打つ pass # passは何も処理しないことを表す。クラスのスコープの指定もインデントで行う # インスタンスの生成 my_variable = MyClass() # インスタンス変数の追加 my_variable.name = 'yamada' # nameというインスタンス変数が追加される # メソッドの定義 class ExampleClass(): def method(self): # 関数の定義同様にコロンを最後に打つ print('Hello World') # メソッドの呼び出し variable = ExampleClass() variable.method() # インスタンスメソッド # メソッドのうち、特にインスタンスから呼び出されるものをインスタンスメソッドという # インスタンス変数の使用方法 variable.price = 300 def get_ten_count_price(self) price = self.price * 10 # selfがインスタンス自身を指すため、インスタンス変数の呼び出しはインスタンス名をselfに変更することで行う # 複数の引数をとる場合の定義と呼び出し variable.name = 'banana' def get_total(self, count) total_price = self.price * count print(self.name + ':$' + str(total_price)) variable.get_total(6) # 第一引数のselfは引数として渡さず、第二引数から記述していく # __init__インスタンスメソッドについて # 引数selfのみの場合 class MyClass(): def __init__(self) # インスタンス生成時に実行する処理を記述する print('create instance!') # インスタンス生成時にインスタンス変数に値を代入することもできる self.name = 'instance name' instance = MyClass() print(instance.name) # 実行結果 => instance name! # 複数の引数をとる場合 class OtherClass(): def __init__(self, name, price): # インスタンス変数に第二、第三引数の値を代入 self.name = name self.price = price # __init__インスタンスメソッドへの引数の渡し方 variable = OtherClass('name', 900) print(variable.name) # => nameが表示される print(variable.price) # => 900が表示される
-
クラスの継承について
- 継承を行うと親クラスのインスタンスメソッドを継承する
- 継承するインスタンスメソッドには
__init__
インスタンスメソッドも含まれる
# menu.py class Menu() def __init__(self, name) self.name = name def info(self) return self.name + 'をインスタンス変数nameに持つ、インスタンスを生成する # クラスの継承方法 # food.py # Menuクラスをimport from menu import Menu # class 子クラス名(親クラス名)で継承することができる class Food(Menu) pass # passは何も処理しないことを表す # 子クラスではpassを使用しているため、子クラス特有の処理はないが # 親クラスの__init__(self, name), info(self)インスタンスメソッドを利用することができる # Foodクラスの利用 # main.py from food import Food # インスタンス生成 food = Food('fish and chips') # 親クラスであるMenuで定義したinfo()メソッドを呼び出す print(food.info())
- オーバーライドは子クラスで親クラスに存在するメソッドと同名のメソッドを定義することで行う
- オーバーライドを行った場合、子クラスのインスタンスメソッドが優先的に呼び出される
__init__()
インスタンスメソッドのオーバーライド
# __init__()インスタンスメソッドはインスタンス生成時に自動的に呼び出されるため、 # コンストラクタのような働きすると認識している # pythonにおける継承では、この__init__()メソッドも継承され、オーバーライドすることもできる # 親クラス class Parent(): # 親クラスでは、インスタンス生成時にインスタンス変数に、引数を代入する def __init__(self, name, category): self.name = name self.category = category # 子クラス class Child(): # 子クラスでは、親クラスと同様の処理を行い、追加で、colorを出力している def __init__(self, name, category, color): self.name = name self.category = category print(color) # 上記の二つのクラスでは、__init__()インスタンスメソッドの中で、重複した処理が記述されている # このような場合、親クラスの__init__()メソッドを呼び出すことで処理の重複を解消することができる # 上記子クラス、Childの修正 class Child(): def __init__(self, name, category, color): # super()で親クラスを呼び出すことができ、super().メソッド名()とすることで、親クラスのメソッドを利用できる super().__init__(name, category) # 親クラスの__init__メソッドを呼び出している print(color)
python使ってみたいなーって思った時の自分用のメモなので、ところどころ他の言語と一緒みたいな書き方してますが、その辺は調べたらすぐ出ると思うので気になる方は調べてみてください。
色んな言語やAWS、SQLなんか勉強してますので、少しづつ記事にしていけたらいいなと思ってます。
次回からはメモ形式ではなく、読みやすい記事も意識して書こうと思います。今回はお許しを。。