【Python】 クロージャ内外で変数を共有する
書籍”Effective Python”項目15のメモです。Pythonを始めて半年経ちますが、真面目に言語自体の勉強をしていなかったので空き時間使ってまだ知らなかった事のメモをします。
Pythonにはnonlocalというキーワードがあり、これによりクロージャ内外でデータを共有できるようです。
def outer_func1(): found = False def inner_func(): # outer_func1のfoundとは別の変数 found = True inner_func() print(found) # Falseと表示される outer_func1() def outer_func2(): found = False def inner_func(): # 変数foundを外と共有 nonlocal found found = True inner_func() print(found) # Trueと表示される outer_func2()
Effective Python ―Pythonプログラムを改良する59項目
- 作者: Brett Slatkin,石本敦夫,黒川利明
- 出版社/メーカー: オライリージャパン
- 発売日: 2016/01/23
- メディア: 大型本
- この商品を含むブログ (5件) を見る
【Python】 サーバーの現在時刻を取得する
Raspberry PiからサーバーのMySQLデータベースにセンサデータを書き込む時に、センサデータ取得時刻も書き込んでいるのですが、Raspberry Pi側の現在時刻がやたらずれるため、サーバーの現在時刻を取得して補正しておくことにしました。サーバーの現在時刻を取得する方法は下記になります。
from datetime import datetime import MySQLdb # DBと接続 connection = MySQLdb.connect(ip_address, user, password, db_name) cursor = connection.cursor() # サーバーの現在時刻を取得 cursor.execute('SELECT NOW()') date_time_on_server = cursor.fetchone()[0]
【Python】 enumerateのカウンタ初期値を設定する
書籍”Effective Python”項目10のメモです。Pythonを始めて半年経ちますが、真面目に言語自体の勉強をしていなかったので空き時間使ってまだ知らなかった事のメモをします。
enumerateは知っていたのですが、カウンタの初期値を第二引数で設定できることを知りませんでした。
numbers = [1, 2, 3] # iは1から始まる for i, number in enumerate(numbers, 1): print('%d: %d' % (i, number))
Effective Python ―Pythonプログラムを改良する59項目
- 作者: Brett Slatkin,石本敦夫,黒川利明
- 出版社/メーカー: オライリージャパン
- 発売日: 2016/01/23
- メディア: 大型本
- この商品を含むブログ (5件) を見る
【Python】 ジェネレータ式の生成
書籍”Effective Python”項目9のメモです。Pythonを始めて半年経ちますが、真面目に言語自体の勉強をしていなかったので空き時間使ってまだ知らなかった事のメモをします。
リスト内包表記は入力が大量な時に膨大な量のメモリを消費しかねない問題があるとのことで、代替としてジェネレータ式が紹介されていました(存在自体知りませんでした)。ジェネレータ式は周囲を[]ではなく()で括ることで生成できます。
# ジェネレータ式 iterator = (x for x in something) next(iterator) # 評価 next(iterator) # 評価
Effective Python ―Pythonプログラムを改良する59項目
- 作者: Brett Slatkin,石本敦夫,黒川利明
- 出版社/メーカー: オライリージャパン
- 発売日: 2016/01/23
- メディア: 大型本
- この商品を含むブログ (5件) を見る
【Python】 リストから一つおきにデータを取り出す
書籍”Effective Python”項目6のメモです。Pythonを始めて半年経ちますが、真面目に言語自体の勉強をしていなかったので空き時間使ってまだ知らなかった事のメモをします。
サンプリングレートが高すぎるセンサのデータ数を減らしたいことがあったので、このような時に使えそうです。
a = [1,2,3,4,5,6,7,8,9,10] # b = [1,3,5,7,9] b = a[::2]
Effective Python ―Pythonプログラムを改良する59項目
- 作者: Brett Slatkin,石本敦夫,黒川利明
- 出版社/メーカー: オライリージャパン
- 発売日: 2016/01/23
- メディア: 大型本
- この商品を含むブログ (5件) を見る
【Python】 リストのコピー方法
書籍”Effective Python”項目5のメモです。Pythonを始めて半年経ちますが、真面目に言語自体の勉強をしていなかったので空き時間使ってまだ知らなかった事のメモをします。
リストのスライスの時に添え字startとendを省略するとコピーになる。
a = [1, 2, 3, 4] # これだと参照。aを変更するとbも変更される b = a # これだとコピー。bはaの変更の影響を受けない b = a[:]
Effective Python ―Pythonプログラムを改良する59項目
- 作者: Brett Slatkin,石本敦夫,黒川利明
- 出版社/メーカー: オライリージャパン
- 発売日: 2016/01/23
- メディア: 大型本
- この商品を含むブログ (5件) を見る
【Python】 PEP8スタイルガイドに従う
書籍”Effective Python”項目2のメモです。Pythonを始めて半年経ちますが、真面目に言語自体の勉強をしていなかったので空き時間使ってまだ知らなかった事のメモをします。
名前付けの規約
関数、変数、属性 ⇒ lowercase_underscore
protected属性 ⇒ _leading_underscore
private属性 ⇒ __double_underscore
クラス、例外 ⇒ CapitalizedWord
モジュールレベルの定数 ⇒ ALL_CAPS
式と文の規約
- インポートの順番は、標準ライブラリモジュール、サードパーティーのモジュール、自分のモジュールの順番に行う。各モジュールはアルファベット順にインポートする
Effective Python ―Pythonプログラムを改良する59項目
- 作者: Brett Slatkin,石本敦夫,黒川利明
- 出版社/メーカー: オライリージャパン
- 発売日: 2016/01/23
- メディア: 大型本
- この商品を含むブログ (5件) を見る