lecture

Python関数のデフォルト引数の注意点

ミュータブルな型とイミュータブルな型 Pythonは全ての型が参照渡しになっています。 ただし、イミュータブルな型のものはデータが更新されると新たなメモリ領域を確保する仕組みになっています。 つまり、何らかデータの変更が行われた段階で新たなメモリ領域を確保して参照するようになります。 Pythonの変数名は値にラベル付をしたものと考えると良いです。イミュータブルな型ではラベルが付け替えられることになります。 ミュータブルな型にはリスト型、辞書型、集合型などがあります。 int、float、文字型、タプル型などイミュータブルなデータが更新されると、新たなメモリ領域を確保して元の値は変更されない結果になります。 ざっくりと覚えるには、タプル以外のリストの仲間がミュータブルでそれ以外はイミュータブルと覚えておけば良いです。 そしてミュータブルなこのリストの仲間はこれから説明する少し面倒なことが起こることを知っておきましょう。 なお、id()関数はオブジェクトのid番号を調べることができます。ミュータブルなオブジェクトに慣れるまで、id()を使ってその値のid番号を確認して見るとよいです。 次に、ミュータブルな型の問題点を確認してみます。 デフォルト引数の注意点 引数のデフォルト値にミュータブルなリストを指定することもできますが注意が必要です。 また、空のリストをデフォルト引数で指定するこ  >>続きを読む

Python ジェネレータの作成

ジェネレータは反復子を作るためのもので、通常の関数と同様に作成します。 returnの代わりにyield を使用するのが特徴です。 yieldが使用された関数ならジェネレータであると言えます。 そして、yieldで返した値を順番に覚えて置いて、next関数で呼び出すことができます。 ジェネレータは反復処理を行うたびに最後に呼び出された時にどこにいたかを管理して次の値を返します。ここが通常の関数と違うところです。 次の例はジェネレータのシンプルな例です。 結果 0 1 2 次の例は、range()を自作するものです。 def my_range(start,end,step): current_number = start while current_number < end: yield current_number current_number += step for i in my_range(1,10,0.1): print(i) [/python] 結果 1 2 3 4 5 6 7 8 9

PYTHON入門で気をつけるポイント(5)オブジェクト指向についてー(2)

コンストラクタ クラスをインスタンス化すると、空のオブジェクトを生成します。 通常オブジェクトを作成する際に、ある特定の初期状態になることが望ましいはずです。 Pythonでは、 __init__() という名前の特別なメソッド定義することができます。 他のプログラムの場合、このような働きのメソッドをコンストラクタと呼びます。 コンストラクタはインスタンスを生成すると自動で実行するメソッドです。 コンストラクタは __init__ という名前をつけて引数には必ずself を第1引数に指定します。 コンストラクタ作成例 結果 私の名前は 花子 です。年齢は 18 で 大阪 生まれです。 継承 継承とはクラスが持つ変数とメソッドを引き継いで(継承して)新しいクラスを作る仕組みです。 継承元のクラス:スーパークラス 継承先のクラス:サブクラス 継承の例 サブクラスのインスタンスからもスーパークラスのプロパティsprやメソッドを呼び出せます。 結果 スーパークラス ‘スーパー’ スーパークラス サブクラス ‘スーパー’ 結果 キョロは鳴くことができる ピーコは鳴くことができる かー子は鳴くことができる かー子は黒色です ニャンコは鳴くことができる ニャンコはジャンプが得意 サブ(派生)クラスのメソッド参照 メソッドの参照は次のようにして解決さ  >>続きを読む

Python イテレータについて

イテレータの仕組みについて次のポイントが分かれば理解できます。 iter()関数でリストをイテレータ化します。 next関数でイテレータから要素を取り出します。 イテレータで取り出す値がない場合には例外を発生します。 イテレータは特に意識しなくてもfor in文などで活用されたいます。次の例で確認できます。 結果 1 2 3 4 5 ————————————————————————— StopIteration Traceback (most recent call last) in () 7 print(next(itr)) 8 print(next(itr)) —-> 9 print(next(itr)) StopIteration: for in文と同じようにリストの内容を一つずつ取り出してくれます。そして要素が無くなった段階で「StopIteration」の例外を発生します。 ではイテレータをどのような場合に使用するかというと、それは自前のクラスにイテレータを仕込んで  >>続きを読む

Google Colaboratoryを使用開始する方法

Google Colaboratoryを使用するための方法です。2019-10-3現在の方法です。 新規でColaboratoryを使うときに困ったら確認してください。 GoogleアカウントでGoogleドライブに入ります。 左上にある「新規」ボタンをクリックします。 「その他」の中にColaboratoryがあるか確かめます。新規で使用する場合は無いはずです。 「アプリを追加」をクリックします。 ドライブにアプリを追加ボックスで「Colaboratory」と検索すると次の画面になります。 この部分をそのままクリックします。 画面が次のようになります。 上部の青いリンク文字をクリックします。 「Colaboratoryへようこそ」を選択します。 開いたページ上部の「ドライブにコピー」を選ぶと、GoogleドライブにColaboratoryのフォルダができます。 一度ブラウザを閉じて、再度Googleドライブを開き、「新規」ボタンから「その他」にColaboratoryのメニューがあれば、それで新規ファイルが作成できます。 何度繰り返してもメニューにColaboratoryが無い場合は、Googleドライブ画面の右上の歯車のアイコンをクリックして「設定」を開きます。 左にある「アプリの管理」を選択します。 Google Colaboratoryのデフォルトで使用にチェックを入れます  >>続きを読む