Python文法詳解を詳解する会 #4 まとめ

2015年5月20日(水)に開催された「Python文法詳解を詳解する会 - 第4回」に関するまとめです。 http://python-in-depth.connpass.com/event/14614/ 講師は「Python文法詳解」の著者@atsuoishimotoさんです。 誰でも編集可能にしていますので、追加したい、デコりたいなどございましたらお願いします。 続きを読む
0
Daigo Akane (赤根 大吾)💉x4 @dgakane

ステートメントはあさっり、関数とかモジュールとかをじっくりいくそうです #pygrambook

2015-05-20 19:04:00
Kouhei Maeda @mkouhei

なるほど、whileやforのelse ループ抜けた時のフラグなんかに使えるのか。 #pygrambook

2015-05-20 19:09:01
Kenjiro Kosaka @inoshiro

car, *cdr = [1, 2, 3] みたいな書き方知らなかった。Python3から導入されたとのこと。headとtailって言うんだっけ? #pygrambook

2015-05-20 19:16:39
Daigo Akane (赤根 大吾)💉x4 @dgakane

単純に決まった回数のループを繰り返したい時は組み込み関数のrange()を使用する for in in range(10): print(i) #pygrambook

2015-05-20 19:17:30
Daigo Akane (赤根 大吾)💉x4 @dgakane

rangeオブジェクトはイテレータを作成するイテラブルオブジェクトだけど、イテレータではない #pygrambook

2015-05-20 19:20:16
Kenjiro Kosaka @inoshiro

range() で返されるのはイテラブルオブジェクト、それをiter()に渡すとrange_iteratorが返ってくる。これがイテレータオブジェクトか #pygrambook

2015-05-20 19:21:47
Kenjiro Kosaka @inoshiro

__next__()が実装されていればイテレータ? #pygrambook

2015-05-20 19:24:04
Daigo Akane (赤根 大吾)💉x4 @dgakane

try-except節のelse節は、例外が発生しなかった場合に通る(「exceptで指定した例外」以外で通るわけではない) #pygrambook

2015-05-20 19:27:49
NAKAMURA, Tomohiro @tomoh1r

#pygrambook 「Python 3 から try-except でエラーを束縛した変数 as ex とかが、 except 節抜けると消える。 Python 2 までは残っていた。 3系の途中から入った。」楽しい。これははまる。

2015-05-20 19:31:08
Kouhei Maeda @mkouhei

Python3だと e=100 try: (snip) except Exception as e: print(e) # OK print(e) # ブロック抜けると削除される(e=100も) #pygrambook これは気をつけないと。。。

2015-05-20 19:32:48
NAKAMURA, Tomohiro @tomoh1r

#pygrambook 「try-except-finally の finally 節で continue 使えない」そうなの。

2015-05-20 19:33:36
NAKAMURA, Tomohiro @tomoh1r

#pygrambook 「いまのところの CPython ではそうなっている。他の処理系ではし変わるかも」

2015-05-20 19:35:21
Daigo Akane (赤根 大吾)💉x4 @dgakane

finally節ではcontinueは書けない(仕様上の定義は見当たらず、Pythonの実装において?) #pygrambook

2015-05-20 19:36:13
Kenjiro Kosaka @inoshiro

finally節でcontinue書けないけど、これは言語仕様では定義されてないとのこと #pygrambook

2015-05-20 19:36:48
Kenjiro Kosaka @inoshiro

BaseExceptionから直接派生してる例外はアプリでは無視するべきでない。KeyboardInterupt無視されると困る #pygrambook

2015-05-20 19:39:24
Daigo Akane (赤根 大吾)💉x4 @dgakane

型を指定しないexceptはKeyboardinterruptであるCtrl-Cなんかも捕まえてしまう。Exceptionかその派生形を指定するのが作法 #pygrambook

2015-05-20 19:41:00
Daigo Akane (赤根 大吾)💉x4 @dgakane

例外の処理中に例外が発生した場合、python2では例外が後に発生したもので上書きされていた。python3では両方表示する。 #pygrambook

2015-05-20 19:45:08
Daigo Akane (赤根 大吾)💉x4 @dgakane

with文でよしなにできるオブジェクト=コンテキストマネージャ #pygrambook

2015-05-20 19:53:07
Kouhei Maeda @mkouhei

def foo(): try: raise ValueError('foo') except Exception as e: 1 / 0 foo() SidのPython3(3.4.3+)では連結されない #pygrambook

2015-05-20 19:57:06
Kouhei Maeda @mkouhei

先ほどの例外の連結がされない件、pastebinに貼りました。 pastebin.com/17YbRcEs #pygrambook

2015-05-20 19:59:22
Kouhei Maeda @mkouhei

コピペしてインデントがおかしいのでも一回 pastebin.com/MVfPbXGB #pygrambook

2015-05-20 20:03:01