Python にはデコレータという特徴的な構文がある。 この構文を使うと GoF のデザインパターンの一つ、デコレータパターンが作りやすくなる。 デコレータパターンは、ある関数やメソッドの処理内容のラッピングや、関数やメソッドのマーキングを通して様々な用途に使える。 まずは、デコレータの最も基本的な使い方を以下に示す。 デコレータを使って修飾対象の処理をラッピングする。 サンプルコードでは 'main' 関数を 'decorator' デコレータで修飾することで、元の処理内容に 'print' 関数の実行を挿入している。 #!/usr/bin/env python # -*- coding: utf-8 -*- def decorator(func): def _decorator(*args, **kwargs): print('decorate') return func(*args,
今日はPythonでのログ出力の話をしようと思う。やはりプログラムの自動化を目指すうえで、実行結果に異常がなかったかを一目で確認できるログ出力機能は必須であろう。 Pythonにはログ記録システムをサポートするloggingモジュールが標準ライブラリとして備えられている。公式のチュートリアル(Logging HOWTO — Python 3.5.1 ドキュメント)もあり、簡単に実装ができる...といいたいところだが、少しクセがあるのでここで噛み砕いて説明できれば、と思う。 まず上のチュートリアルだが、初級と上級のチュートリアルに分かれている。当然のように初級を参照し、「ファイルへのlogging」というセクションを参考にしながら次のようなプログラムを書き上げた。 import fft import logging logging.basicConfig(filename='example.
EDIT: 2018/06/19 pipenvについて追記 本記事は社内向けに書いた文章を修正したものである。 世の中にある代表的な「Python環境管理ツール」に virtualenv, pyenv, venv, pipenv の4つがある。これらをGoogleで検索すると使い方が書かれたページばかりが出てきて、それらの違いや使い分けを解説する記事は少ない。 本当は必要ではないのに「pyenvは便利」のような謳い文句で何となく使わせる記事や、古い情報を元に書いた「一見新しそうに見える記事」も多く見られる。 この記事では、中立・実用重視な視点から各ツールを解説し、筆者が考えうるベター(ベストは人それぞれ)な組み合わせについて書く。 なおAnacondaは初学者が使うにはおすすめできない。Anacondaについての筆者の解釈は末尾にあるためそちらも参照されたい。 本記事公開後いくつか近い話題
今回はソケットプログラミングについて。 ソケットというのは Unix 系のシステムでネットワークを扱うとしたら、ほぼ必ずといっていいほど使われているもの。 ホスト間の通信やホスト内での IPC など、ネットワークを抽象化したインターフェースになっている。 そんな幅広く使われているソケットだけど、取り扱うときには色々なアーキテクチャパターンが考えられる。 また、比較的低レイヤーな部分なので、効率的に扱うためにはシステムコールなどの、割りと OS レベルに近い知識も必要になってくる。 ここらへんの話は、体系的に語られているドキュメントが少ないし、あっても鈍器のような本だったりする。 そこで、今回はそれらについてざっくりと見ていくことにした。 尚、今回はプログラミング言語として Python を使うけど、何もこれは特定の言語に限った話ではない。 どんな言語を使うにしても、あるいは表面上は抽象化さ
Photo by pycon jp 秋山です。 Python3を使って開発中&勉強中の皆さん、組み込み関数はどれくらい覚えていますか?よく使うrange, input, min, max, dict……などしか覚えていないという人も多いかもしれません。 公式ドキュメントを見ると、実に68個もの組み込み関数がありました。(※ちなみに2系→3系で、あまり使われていないものはimportが必要になったり、上位機能のあるものが下位機能と統合されたり、命名変更されたりしています。例えばxrange,rangeは統合、reduceはfunctoolsへ移動…などなど。) もちろん、あまり使う機会のなさそうな特殊な関数まで覚えておく必要はありません。が、実は案外知られていないけど、使うと結構便利なものもあるのです。 というわけで今回は、意外と知られていないけど、知っていると便利ではかどると思うPytho
今回は Google が公開した python-fire というパッケージを試してみた。 python-fire では、クラスやモジュールを渡すことで、定義されている関数やメソッドを元に CLI を自動で生成してくれる。 ただし、一つ注意すべきなのは、できあがる CLI はそこまで親切な作りではない、という点だ。 実際にユーザに提供するような CLI を実装するときは、従来通り Click のようなフレームワークを使うことになるだろう。 では python-fire はどういったときに活躍するかというと、これは開発時のテストだと思う。 実装した内容をトライアンドエラーするための CLI という用途であれば python-fire は非常に強力なパッケージだと感じた。 今回使った環境は次の通り。 $ sw_vers ProductName: Mac OS X ProductVersion:
はじめに こんにちは、Python界のラファエル・ナダルです。全豪オープンテニス、盛り上がりましたね。さて、先日次のようなエントリーを立て続けに書いたんですが、「なぜAnacondaに関しての記述がないのか」という突っ込みをもらったので、参照用にメモを残しておきます。 Pythonの仮想環境構築 2017.01版 - YAMAGUCHI::weblog Pythonの環境設定でむかついてる人はとりあえずこれをコピペで実行してください 2017.01 - YAMAGUCHI::weblog なおこの記事の作成にあたっては @aodag に数多くのアドバイスをいただきました。この場を借りて感謝。 TL;DR condaの開発者はPyPAともっとコミュニケーションとってほしい。 前提 この記事はPythonを触り始めたばかりだけど、パッケージ管理ツール等々のスタンダードがどのようになっているかな
はじめに こんにちは、Python界のテリー・ギリアムです。こんな記事を見かけて、Pythonの開発環境を作るのが面倒という認識が広まるのは良くないなあと思って書きました。ただの突っ込み記事です。 qiita.com そのツールほんとに要りますか? 出だしにこんなセクションタイトルがありました。 その仮想環境本当に必要ですか? たしかに仮想環境要らないひとは要らないよねっていうのは同意です。その場合、入ってるPythonのsite-packagesにどんどんパッケージがインストールされるだけなので、手動で消せる人はそれでいいし、そもそもパッケージのバージョンとか知るかって人はそのままパッケージインストールすればいいと思います。 とはいえ、複数のプロジェクトでパッケージのバージョンがぶつかったら困る人とかいるし、そういう人は仮想環境を使うことになるでしょう。で、件の記事ではいろいろなツールを
はじめに こんにちは、最近Pythonをまた書き始めたマンです。なんか古い記事が参照されててだいぶ害があるので現状にあったやつにします。 Pythonの環境設定でむかついてる人はとりあえずこれをコピペで実行してください - YAMAGUCHI::weblog 要点 これからPythonを使い始める人、という前提に立っているので今更Python2系を使い始める意味はない。*1ということでPython3系(現時点最新安定版のPython3.6.0)を使いましょう。 標準を使うのがよい(venv + pip) 自分がよく分かってないツールは使わないほうがいい Python2系を使う人は、上にリンクしてある記事にあるとおりなんですが、Python2.7を使うのであれば pip + virtualenv 一択だと思います。やり方は下にある内容と変わりません。 以下コピペ macOS Homebrew
Photo by Yuya Tamai 秋山です。 私は主にPythonを使って開発をしているのですが、Python2系とPython3系にはいろんな変更点があります。 で、互換性がない変更点も割とあって、よく知らないまま初心者が2系から3系に移行しちゃうと結構危険なところもあるので、今日はその辺の話をしていきます。 print に括弧が必要になっちゃったよねーみたいな話や、よく言われている raw_input とか xrange の話は飛ばします。 ■意外と気をつけたいPython3系における変更点 ◆map,filter,zipがイテレーターを返してくる Python2系ではmap, filter, zipともに普通のリストを返していますよね。 map_object = map(int, "12345") print(list(map_object)) print(list(map_o
まえがき 今年の春から今まで、2年ぶりにPythonを沢山書いているわけなんですが、JavaScriptのクソに頭をやられて久しぶり書くだけあって基本的なところから色々と頭から抜け落ちていたわけです。 そんで何か思い出すたびに会社のwikiを使ってメモっていたのですが、せっかくなので少々訂正をしてブログにも書きます。 また、弊社はPython2を使っているので、2が前提の記述になっているところがいくつかあります。なるべくフォローしていますが、参考にする場合は自分が使っているバージョンを確認することをおすすめします。 また、今から新しくPythonでプロジェクトを始めようと思っている人は3系を使いましょう。 知ってる人は当然知ってる、でも結構長いことPythonを書いてても知らなかったりするような小技を載っけました。 なお、メタプログラミングとかの黒魔術っぽい記事のまとめはこちら: hach
機械学習にどのようなPythonの知識が必要かは、Python機械学習プログラミングの監訳者福島 真太朗(ふくしま しんたろう)さんが以下のように述べられています。 Pythonの文法については、リスト、タプル、ディクショナリなどの基本的なデータ構造、forループ、print関数、zip関数、enumerate関数、関数やクラスの作成方法などが理解できていれば十分です。 thinkit.co.jp そこで今回はPythonで書かれた機械学習のコードを読めるように、リスト、タプル、ディクショナリなどの基本的なデータ構造、forループ、print関数、zip関数、enumerate関数、関数やクラスの作成方法について学んでいきます。 従ってこの記事は、Pythonを一度もやったことがなく、機械学習のためにPythonを学びたいという人向けです。 今回読み解くPythonコードについて 今回は題
皆さんこんにちは お元気ですか?私は元気です。 Pythonにおける高速化手法を掲載してみます。 簡単なコード並びに索引のような感じで引けるようなイメージで作成しました。 本日の目次です。 Pythonにおける高速化の必要性 Pythonの高速化 高速化の手順 Profiling 基本的な条件 計測コード Pythonの基本的な書き方部分 rangeよりxrangeを(Python2.7) リストの生成 文字列結合 Import文のコスト 関数呼び出しのコスト ドットを避ける yieldを使う Numpyに関するTips Numpyを使用して基本演算を高速化する Numpyの要素にアクセスする演算をしない Numbaで手早く高速化 その他高速化ツール Cython Dask PyPy 感想並びに展望 参考文献 Pythonにおける高速化の必要性 PythonはC++やJavaと比較すると非
ECサイト向けのレコメンデーション・エンジンを構築すると仮定しましょう。 構築する方法としては、コンテンツベースか協調フィルタリングを使用する2つの進め方があります。それぞれのメリットとデメリットを見てみましょう。そして、コンテンツベースエンジンを 簡単に実装する方法 について探りましょう(Herokuにデプロイ可能です)。 コンテンツベースを使用するとどのようになるのか先に知りたい方は、ほぼ同じレコメンデーション・エンジンが Groveの商品(紹介)ページで使用 されていますので、見てみてください。 コンテンツベースのレコメンデーション・システムはどのように機能するのか 商品説明や商品名、価格などの実際のアイテムプロパティなどが使用されるため、コンテンツベースシステムで構築されていると周りには思われているのではないでしょうか。これまで一度もレコメンデーション・システムの使用を検討したこと
3.3. Scikit-image: 画像処理¶ 著者: Emmanuelle Gouillart scikit-image は画像処理に特化した Python 画像ライブラリで、 NumPy 配列を画像オブジェクトをネイティブに扱います。この章では scikit-image を多様な画像処理タスクにどう利用するかや NumPy や Scipy などの他の Python の科学技術モジュールとの連携についても扱います。 参考 基本的な画像操作、たとえば画像の切り抜きや単純なフィルタリングなど、多くの単純な操作は NumPy や SciPy でも実現できます Numpy と Scipy を利用した画像の操作と処理 を参照して下さい。 この章を読む前に前の章の内容について慣れておく必要があります、マスクやラベルといった基本操作は準備として必要です。
「Pelican」は、Python製静的サイトジェネレータです。 「reStructuredText」「Markdown」「AsciiDoc」といったマークアップ言語を用いて、 好きなエディタでコンテンツを記載し、作成したコンテンツを付属のCLIツールで手軽に公開する事ができます。 似たようなツールとして、Ruby製の Jekyll や Octopress、 Middlemanが有名ですが、なんとなく「Python製の静的サイトジェネレーターが無いかなー」と探していたところ出会ったのがPelicanでした。 Pelicanと出会った瞬間 触ってみて、Pelicanの良い所は「Pythonさえあれば動く!(ぴゅあぱいそん!)」「シンプル!」「動作が軽快!」ってところなのかもしれませんが、まぁ、とりあえず 名前がかっこいい って事で使い始めました。 (ロゴは適当ですが・・・) ちなみに「Pel
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く