このBlogは移転しました。今後は aish.dev を御覧ください。

python

tse 0.0.14リリース

tse 0.0.14をリリースした。 組み込み関数 E() を追加 tseからコマンドを使うとき、毎度毎度 subprocess.check_output('ls', shell=True, universal_newline=True) とするのは面倒なので、E('ls') で呼び出せるようにした。 例: $ tse -b 'for l in E("ls").…

Python 3.6 リリースパーティー 発表資料

What's new in Python 3.6 from Atsuo Ishimoto

Python 3.6の概要 (その6 - ローカル時間の曖昧さを解消)

夏時間を採用している地域では、1日に2回、同じ時間となる場合がある。たとえば、アメリカの東部時間では、11月第1日曜日の午前2時に夏時間が終了すると、また同じ日の午前1時にもどる。つまり、この日は午前1時は2回存在することとなり、このタイムゾーンで…

Python 3.6の概要 (その4 - クラス定義)

クラス定義のカスタマイズ これまで、Pythonのクラス定義をカスタマイズする手段として、メタクラスが使われてきた。しかし、メタクラスを利用したカスタマイズは、Pythonのオブジェクトモデルや型システムの知識が必要で実装が難しく、また複数のメタクラス…

Python 3.6の概要 (その3 - async関連)

非同期ジェネレータ 現在のPythonでは、ジェネレータを使って、とてもお手軽にイテレータを作成できる。例えば、奇数列を生成するジェネレータは、次のように書ける。 def odds(): i = 1 while True: yield i i += 2 しかし、ジェネレータが存在しなかった頃…

Python3.6の概要(その2 - 変数アノテーション)

変数アノテーション PEP 484 -- Type Hintsで導入された型ヒントが、モジュールのグローバル変数や、クラスのインスタンス変数などにも指定できるようになった。PEP 526 -- Syntax for Variable Annotations 変数の型アノテーションは、mypy などではコメン…

Python 3.6の概要 (その1 - f文字列)

f文字列 これまで、Pythonで文字列に変数を埋め込む方式にはいくつかあったが、ついに式を文字列中に直接記述できるようになった。 (PEP 498 -- Literal String Interpolation) 式を埋め込んだ文字列はf文字列(formatted string:フォーマット済み文字列)と呼…

Python3用パッケージってどのぐらい増えただろ?

Python3を使ってても、PyPIのパッケージがPython3対応かどうか、あんまり心配しなくなった気がする今日このごろです。 体感的にはPython3であまり不自由はない感じになってきたが、実際問題、どの程度Python3対応が進んでいるのか、気になったので簡単に調べ…

emitjson

emitjson というPythonモジュールを公開した。 pypi.python.org emitjson という名前にしたが、じつはJSONは出力しない。 任意のオブジェクトを、json モジュールがサポートしているオブジェクトに変換するときに使うユーティリティだ。 例えば、日付とバイ…

Pythonで++i

この間、Pythonで変数のインクリメントないよね、って話がでた。こんなのだ。 i = 99 ++i print i ちなみに、Pythonでも ++i や --i と書くことはできる。書くことはできるが、Pythonでは ++ や -- はインクリメント/デクリメント演算子ではなく、単項の + …

Python3.3のdecimalが馬鹿っぱやい件

Python 3.3 では decimalモジュールがC言語で実装され、10進浮動少数演算が馬鹿っぱやになりました。単純なニュートン法で平方根を計算してみると、 def newton(n): guess = n/2 better = (guess + n/guess)/2 while better != guess: guess = better better…

PyConJP 2012 ハンズオン資料

PyCon JP 2012 hands-on FlaskによるWebアプリケーションの実装とプログラミングツール from Atsuo Ishimoto

execとローカル変数

先日のPyCon JPで、私はまたもやってしまったのである。Hands on の講師という大役を引き受けておきながら、間違った演習用のスクリプトを書いてしまった。昔からの思い込みを元に、大雑把な実験だけで書いてしまったのである。何を間違えたかというと、Pyth…

PythonはDSLが苦手?

PythonはDSLが苦手でしょうか、って話をチラッと目にした。あんまりDSLって知らないけど、そんなに得意ってことはないんじゃないかと思う。Pythonってのは構文的に遊びが少ないように考慮して作られてるし、そもそもPythonは「実行可能な擬似コード」って言…

備忘録 - #python3 で sys.std(in|out|err) の encoding を強制する について

備忘録 - #python3 で sys.std(in|out|err) の encoding を強制するについてC言語の教科書にでも出てきそうなこんな基礎的なスクリプト import sys for l in sys.stdin: print l が動かない!って文句を言いたくなる気持ちは、非常によく理解できる。Unix的…

python.jpの明日はどっちだ

最近「PYJUGって何なの?」「網元衆って何なの?」「何してるの?」「誰なの?」 って話を聞く機会が多いように思えます。 Pyjug-discussへの投稿も凄く減っていますし また網元衆が再編成されて5年も経っています。 外から見ていると、そろそろ運営が実態に…

Pythonのトレース情報を表示する disptrace ってのを作ってみた

Pythonには実行したスクリプトの行番号なんかを表示するtraceモジュールというのがあって、デバッグの時などうまく使うとデバッガでブレークポイント仕掛けるより効率的にデバッグできるときもあったりするんだけど、いまいち低機能で使いにくく、あんまり使…

あなたの知らないPython3の秘密

関数の引数は最大255個まで def f(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20, p21, p22, p23, p24, p25, p26, p27, p28, p29, p30, p31, p32, p33, p34, p35, p36, p37, p38, p39, p40, p41, p42, p4…

Zipファイル一個で実行可能なPythonアプリケーションを作ってみる - 第2夜

さて、先日 http://d.hatena.ne.jp/atsuoishimoto/20120503/1336050988 を紹介したが、Flaskアプリケーションの Blueprint 機能を使うと正しく動作しないようだ。Blueprintでは独自にテンプレートや静的ファイルのディレクトリを指定できるようになっている…

Zipファイル一個で実行可能なPythonアプリケーションを作ってみる

アプリケーションを作成して配布するとき、配布するのは複数のファイルやディレクトリではなく、ファイル一つだけで済ませることができたらそれに越したことはないだろう。Pythonには cx_Freeze や py2exe のような、プラットフォーム固有な実行可能ファイル…

pykf 0.4をリリースしてみるなど

ひさしぶりに pykf をリリースした。pykf 0.4では、特に機能追加などは行っていないが、Python3対応となっている。Python3で使う局面はそんなに多くは無さそうだけど…一応注意しておくと、Python3ではpykfが扱うのは文字列ではなくbytesだ。Python3の文字列…

Python Developers Festa 2012.03 出陣記

毎度おなじみ Python Developers Festa 2012.03 にお邪魔してきた。会場をご提供頂いた Oracle 様、また丸一日おつきあい頂いた @yokatsuki様には心からお礼を申し上げます。@voluntas が迷惑かけてほんとすんません。さて、今回はPython2から3への移行の話…

mockはこう使え

最近、Mockライブラリ http://www.voidspace.org.uk/python/mock/ を使ってみたのでメモ。このライブラリは、その性質上、動的にメソッドや属性を作成するケースが多く、普通のPythonライブラリのようにイントロスペクションに頼って使い方を調べるのは難し…

tse 0.0.2 - Text Stream Editor in Python

先日公開した tse をちょっとアップデートした。http://pypi.python.org/pypi/tse $ sudo easy_install -U tse 等でインストールできる。 コマンドラインオプションの修正 0.0.1 では -a オプションでコンディションとアクションを両方指定していたが、0.0.2…

tse - Text Stream Editor in Python

久々にsedを使ってちょっとしたテキストを処理をしてたら、やっぱりこういうのもPythonで出来ないかなぁ思った訳である。Pythonスクリプトというのは改行とインデントが不可欠なので One Liner に向かないというのはご案内の通りだが、ちょっとは何とかなる…

僕たちPythonistaは、プログラミングに、Excelを使います!

みんな、Excel使ってますか!?もちろん使ってますね!?休暇届も、作業日報も、見積書も、スケジュール表も、みーんなExcelですね!? もちろん、プログラミングだってExcelですね!? 当然です!みんなそうやって仕事してるんです! Excel版のTwitter公式…

Python3 Advent Calendar 二十日目 PEP 380 -- Syntax for Delegating to a Subgenerator

Python3 Advent Calendarとやらに参加しろ、なんか書けと言われて泣く泣くキーボードを叩くatsuoishimotoです。書けと言われてもネタがないのでどっかからパクろうと Python3 Advent Calendar を最初から目を通してみると、しょっぱなから良いネタがあった。…

Python Developers Festa 2011.10 の発表資料

Python Developers Festa 2011.10で、「Pythonのシグナル処理」というネタを発表させて頂いた。 Pythonのシグナル処理 View more presentations from atsuoishimoto 内容的には、Pythonがどのようにシグナルを受け付けているのかという初歩的な解説と、一般…

Re:Python とクロージャ

@kumagi: @shomah4a 記法をちょっと改める事で回避出来るというのも謎ですし、なぜリストならクロージャ出来るのかわからないのですがどういう哲学でこんな設計になってるのでしょうorz http://d.hatena.ne.jp/shomah4a/20110909/1315542720 関数をネストで…

いまさらながら、エキスパートPythonプログラミング

遅ればせながら、エキスパートPythonプログラミング を読んでみた。翻訳者の一人、森本さんに頂いたのだが、なんと彼は本をやるから書評を書けと私に強制するのだ。ひどい男である。聞くところによればこの本、すでに第4刷まで増刷されたヒット作であり、い…