Más contenido relacionado
La actualidad más candente (20)
Similar a 研究会20140618:進捗と闇Pythonistaのワンライナーテクニックを少々 (20)
研究会20140618:進捗と闇Pythonistaのワンライナーテクニックを少々
- 2. Komachi Lab. M1 Peinan ZHANGKomachi Lab. M1 Peinan ZHANG
進捗というか
今取り組んでいること&近々やること
2
- 3. Komachi Lab. M1 Peinan ZHANGKomachi Lab. M1 Peinan ZHANG
前回のTODOs
共同研究でのSurvey
p Crawlingを修正(今週中に)
n Streaming APIを使うことに
• たまに途切れる問題を突き止める
n filterとREST Searchを併用
p 盛り上がりをどう評価するか(今週中に)
対話処理の勉強
p 20日までにもらった本を読破
n まだ途中
筋トレ
p ベンチプレス40kgを10回3セット目指して
n キツかったんで35kgから・・・
3
- 4. Komachi Lab. M1 Peinan ZHANGKomachi Lab. M1 Peinan ZHANG
Crawlerが止まったエラー分析
1回目(6/10, 17:30):420エラー
p 複数のIPから同じアカウントを使ってStreaming APIにアクセ
スすると発生するらしい。
p でもそれをやった心当りがない・・・
2回め(6/14, 08:40):ライブラリのエラー
p 勢いに耐え切れなかった?
4
- 5. Komachi Lab. M1 Peinan ZHANGKomachi Lab. M1 Peinan ZHANG
共同研究
5
大
体
の
流
れ
は
決
ま
っ
た
- 6. Komachi Lab. M1 Peinan ZHANGKomachi Lab. M1 Peinan ZHANG
TODOs
共同研究
p Crawlerの安定化
p 引き続きSurvey
n 極性分類
n 盛り上がり評価
p 評価対象データの収集
対話処理
p 引き続きお勉強
6
小テスト作成・採点
p オートマトンと言語理論
SLP予習
p 4.3, 4.4
筋トレ
p ベンチ35kgを10回3セット
- 7. Komachi Lab. M1 Peinan ZHANGKomachi Lab. M1 Peinan ZHANG
おまけ(本編)
そろそろネタが尽きてきた・・・
7
- 8. Komachi Lab. M1 Peinan ZHANGKomachi Lab. M1 Peinan ZHANG
先週の出来事
友人「お前ってpython使うんだよね」
ワイ「一応ね」
友人「んじゃpython教えて」
ワイ「ええで」
友人「そいやデコレータってなに?」
ワイ「それは知らんな。飾り…?調べてみるか」カチカチ
友人「なんかいっぱい出てきた。デコレータ、イテレータ、ジェネレー
タ…紛らわしいな」
ワイ「ほうほう」カチカチ
ワイ「ん?ワンライナー…?」カチカチ
ワイ「ファッ!?」
8
/デェェェェェン\
- 9. Komachi Lab. M1 Peinan ZHANGKomachi Lab. M1 Peinan ZHANG
ワンライナーとは
❝ 世界には1行でプログラムを書くワンライナーという技
巧的プログラミングの世界があります。
ワンライナーと言われる言語の多くはPerlやRubyなので
すが、比較的委員長キャラのPythonでもワンライナーが
できます。
PEP8とZen of Pythonで綺麗になっている白Pythonの
世界に
Pythonでも1行で書いたよ!楽しい!!
✌('ω'✌ )三✌('ω')✌三( ✌'ω')✌
とのことらしいです。
ぶっちゃけ読みづらくなるだけじゃn
9
読み難いC言語ソースコード
コンテスト
- 10. Komachi Lab. M1 Peinan ZHANGKomachi Lab. M1 Peinan ZHANG
闇Pythonista入門
ワンライナーの世界へようこそ
10
- 11. Komachi Lab. M1 Peinan ZHANGKomachi Lab. M1 Peinan ZHANG
デコレータ
イテレータ・ジェネレータ
簡単に言うと
p デコレータ:関数を引き取り、新たな関数を返す。
p イテレータ:一連のデータ列(stream)を表現するオブジェ
クト。
p ジェネレータ:イテレータを返す関数。
11
- 12. Komachi Lab. M1 Peinan ZHANGKomachi Lab. M1 Peinan ZHANG
デコレータ
関数を引き取り、新たな関数を返す。
例)
12
def deco(func):
print("deco")
return "string"
@deco
def test():
pass
実行結果
deco
def deco(func):
print("deco")
return "string"
def test():
pass
test = deco(test)
等価
- 13. Komachi Lab. M1 Peinan ZHANGKomachi Lab. M1 Peinan ZHANG
デコレータを引数に渡したり
def change_result(result):
def receive_func(func):
import functools
@functools.wraps(func)
def wrapper(*args, **kwargs):
func(*args, **kwargs)
return result
return wrapper
return receive_func
@change_result(False)
def foo():
return True
print(foo())
デコレータの応用
13
デコレータをネストしたり
@d1
@d2
def func():
pass
実行結果
False
等
価
def func():
pass
func = d1(d2(func))
- 14. Komachi Lab. M1 Peinan ZHANGKomachi Lab. M1 Peinan ZHANG
イテレータ
一連のデータ列(stream)を表現するオブジェクト。
イテレータオブジェクト自体は以下の2つのメソッドをサポート
する必要があります。これらのメソッドは2つ合わせてイテレー
タプロトコルを成します:
__iter__()
イテレータオブジェクト自体を返します。このメソッドはコン
テナとイテレータの両方を for および in 文で使えるようにす
るために必要です。
next() ※
コンテナ内の次の要素を返します。もう要素が残っていない場
合、例外 StopIteration を送出します。
※ Python3系では、__next__ に変更された。
14
- 16. Komachi Lab. M1 Peinan ZHANGKomachi Lab. M1 Peinan ZHANG
ジェネレータ
イテレータを返す関数。
❝ 通常の関数に似ていますが、return 文を使わず、代わりに for ルー
プで使ったり next() 関数で1つずつ取り出せる値の列を生成するため
に yield 文を使います。
❝ yield 文に到達するたびに関数の実行は実行状態(ローカル変数や実
行中の try 文などを含む)を保存して中断されます。
❝ ジェネレータが再開されるとき、(通常の関数が実行の度に初期状態
から開始するのに対して)中断した状態から実行を開始します。
ようするに
p yield を使ってイテレータを返す。
p 中断しても中断した状態から実行できる。
16
- 18. Komachi Lab. M1 Peinan ZHANGKomachi Lab. M1 Peinan ZHANG
lambda
いわゆる無名関数。
構文:
lambda [arguments]: expression
18
func = lambda x: x ** 2
def func(x):
return x ** 2
等価
- 19. Komachi Lab. M1 Peinan ZHANGKomachi Lab. M1 Peinan ZHANG
リストの内包表記
リストを生成するための簡潔な方法。
❝ 式、続いて for 節、そしてその後ろに続くゼロ個以上の for
節または if 節からなります。
19
- 20. Komachi Lab. M1 Peinan ZHANGKomachi Lab. M1 Peinan ZHANG
それでは、よいPythonライフを!
20
- 21. Komachi Lab. M1 Peinan ZHANGKomachi Lab. M1 Peinan ZHANG
参考・出典
u Twitter Streaming APIで420エラー ¦ CTOA日記
http://blog.livedoor.jp/hiroki0907/archives/51751089.html/
u 闇Pythonista入門(Pythonワンライナーのテクニック集)
http://qiita.com/cocu/items/37bfdc0f24750127e7d3/
u Python 2.7 Documentation
http://docs.python.jp/2/library/index.html/
u Python ‒ デコレータ ¦ Lambda7 s Website
http://www17.atpages.jp/~lambda7/py/decorator.html/
u エキスパートPythonプログラミング(1) イテレータ、ジェネレータ、
ジェネレータ式 ¦ 作業記録/備忘録(仮)
http://d.hatena.ne.jp/nihohi/20120831/1346376992/
u Pythonの無名関数(lambda)の使い方 ¦ Life With Python
http://www.lifewithpython.com/2013/01/python-anonymous-function-
lambda.html
u マイナビニュース
http://news.mynavi.jp/
21