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

2019-01-01から1年間の記事一覧

Software Designの原稿をJupyter NotebookとiPad Proで書いた話

雑誌 Software Designさんから執筆依頼を頂いた。「Visual Studio Code の Jupyter Notebook実行機能を使ってPythonのテキスト処理などを学べる記事を」ということで、得意なテーマだしスケジュールに余裕のある時期でもあったので、けっこう気軽に引き受け…

Python 3.8 の概要 (その8) - Did you mean "=="?

さて、質問です。 a = 1.0 a is 1.0 上記の処理で、a is 1.0 の結果は True となるでしょうか、それとも False となるでしょうか? True と答えたあなた、不正解です。反省してください。 False と答えたあなた、同じく不正解です。猛省してください。 正解…

Python 3.8 の概要 (その7) - ちょっと便利そうな機能追加

math.prod() リストなどのイテレータの要素の積を計算する math.prod() が追加されました。 sum() の掛け算版ですね。 >>> import math >>> math.prod([1,2,3,4]) 24 正規表現が \N{名前} 記法をサポート reモジュールで、正規表現に文字の名前を指定する \N…

Python 3.8 の概要 (その6) - 拡張モジュール関連

拡張モジュールがリリースビルド/デバッグビルドで共用可能に これまで、デバッグ用にビルドされたPythonでは、Pythonのメモリ使用状況を調査するための機能 が有効になっていました。このため、リリース用にビルドされたPythonとデバッグ用にリリースされた…

Python 3.8 の概要 (その5) - デバッグ用 f文字列フォーマット

Python3.8の新機能で、これ一番好きかも。このためだけにPython3.8必須にしてもいい。 通常、 f文字列 に変数名や式を指定すると、その値が文字列に埋め込まれます。 >>> foo, bar = 10, 20 >>> print(f'value is {foo+bar}') value is 30 便利な機能ですが…

Python 3.8 の概要 (その4) - multiprocessing.shared_memory モジュール

multiprocessing.shared_memory モジュールで、共有メモリを使ってプロセス間でデータを交換できるようになりました。似たような処理は mmap モジュールで実現できましたが、マルチプラットフォームで簡単に利用できるようになります。 Numpyの ndarray オブ…

Python 3.8 の概要 (その3) - Pickle protocol 5 with out-of-band data

Pythonでは、複雑なデータの交換や保管する場合、よく Pickleモジュール が使われます。Pickleはデータを外部に出力可能な形式に変換してファイルに変換したり、サーバと通信して送信したりします。 Pythonのconcurrent.futures や multiprocessing を使って…

Python 3.8 の概要 (その2) - Positional-only parameters

Python 3.0 以降では、関数を定義するときに、キーワード専用引数 を指定できるようになりました。 def func(a, b, *, c=1, d=2): return a+b+c+d こんなのですね。引数のリストに * がある関数を呼び出すとき、* の後ろにある引数の値は、かならずキーワー…

Python 3.8 の概要 (その1) - Assignment expressions

古来、Pythonでは「代入は文であるべき!」と一貫して主張してきました。 C言語などでは、代入は足し算や掛け算と同じ、値を計算する「式」で、たとえば a = (b=100) / 2; と書くと、b には 100 を代入し、a に 100/2=50 を代入します。1+1 は 2 という値に…

RecursionError は RecursionError とは限らない、という話

先日、 Pythonjp Discordサーバ の初心者部屋で、こんな質問 があった。 次のようなコードが RecursionError 例外を出して困っているという。 if a: ... elif b: ... elif c: ... elif d: ... のように、数千個の elif が並んでるコードだ。 多くの場合、Rec…

Python.jp Discordサーバ雑感

Python.jp Discordサーバ の運用を本格的に開始してから半年以上経ったので、感想など。 ユーザ層 Pythonのユーザ層いうとビジネス層というか、おっちゃんが多いイメージがあるのだか、Discordというゲームで広く使われているシステムなためか、アクティブな…

docs.python.jpでのドキュメント公開終了

これまで、python.jpではPythonの日本語ドキュメントを公開してきたが、この度、ドキュメントのホスティングを終了し、docs.python.org へのリダイレクトのみをおこなうようになった。 www.python.jp 実に喜ばしいことである。これまで、日本語ドキュメント…

Pythonの高速化?

たまに、「Pythonの高速化」なんてブログを見かけることがある。書いてあるのは、たいてい s = 0 for i in list_of_ints: s += i と書くより、 s = sum(list_of_ints) のほうが速い!なので sum() 使おう!とかだ。 たしかに、sum() は速い。Pythonインター…