サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
体力トレーニング
www.lifewithpython.com
※非空なら: 空でない文字列がセットされたら PIP_NO_CACHE_DIR には少し注意が必要です。 記事執筆時点で最新の pip 21.1.1 の場合は「 truthy な値か falsy な値をセットするとキャッシュを生成しない」という挙動をします。 truthy な値と falsy な値というのは具体的には次のものを指します: truthy な値: y yes t true on 1 falsy な値: n no f false no 0 truthy な値でも falsy な値でも同じ挙動になるのはとても気持ち悪いのですが、これは後方互換性を保つための処置のようです。 もともと PIP_NO_CACHE_DIR は falsy な値のみを受け取るようになっていて、「 falsy な値をセットするとキャッシュを無効にする」(変数名が no cache なのに!)という直感と反する
Python で https サーバーを動かす方法を紹介します。 正確には、自己署名証明書(いわゆる「オレオレ証明書」)を使った、開発用・確認用の簡易サーバーをローカルで動かす方法について紹介します。 この方法は本番環境・公開環境では使わないようにしてください。 まず最初に通常の http サーバーを動かす方法をおさらいします。 http サーバーを動かす python -m http.server Python で http サーバーを動かす最もかんたんな方法は、 Python 本体に同梱の http.server モジュールを実行するやり方です。 python コマンドの -m オプションで http.server モジュールを指定して実行します:
今回は Python のスクリプトにおいてエントリーポイントとなる main 関数を定義することのメリットについて説明します。 # わざわざ main 関数を定義してその中に処理を書く def main(): ... if __name__ == "__main__": main() Python では本来 main 関数を定義する必要はありませんが、経験者が書いたスクリプトではよく main 関数が書かれています。 筆者は Python を学び始めた頃にそのようなコードを見て「必要ないものをなぜわざわざ書くのだろう?」と疑問に思いました。 今回は筆者自身がかつて抱いたこの疑問に答えてみます。 尚、 main という名前を使うのはただの慣習です。 この名前の関数にしないといけない制約は特にありません。 本記事において、「 main 関数を定義する」というのは、正確には上のコードのように m
skeeze による Pixabay からの画像 Python の := 演算子について説明します。 := 演算子は Python のバージョン 3.8 ( 2019 年 10 月リリース)で導入されました。該当する PEP は PEP 572 です。 呼び方 呼び方は、 := 演算子のことは walrus operator 、 := を含む式全体のことは assignment expressions と呼ぶのが主流のようです。 日本語では、前者はカタカナで ウォルラス演算子 、あるいは訳して セイウチ演算子 ( walrus = セイウチ )でしょうか。 assignment expression は別の言語で一般的な 代入式 がよいですかね。 PEP 572 には named expressions と呼ばれることもあると書かれています。 ウォルラス演算子という呼び名は日本ではあまり流
今回は Python 3.7 で標準ライブラリに追加された dataclasses について見ていきたいと思います。 目次 dataclasses とは dataclasses の使い方 dataclasses の使いどころ dataclasses とは dataclasses は、独自のクラスを定義するときに定型的な特殊メソッド( special methods )( __init__() 等)の記述を省略できる機能を提供するモジュールです。 Python 3.7 から標準ライブラリとして Python 本体に同梱されるようになりました。 代表的な機能は次の 2 つです。 dataclasses.dataclass: クラスのデコレータ。対象のクラスのクラス変数をもとに特殊メソッドを追加する。 dataclasses.field: クラス変数に使う。 dataclass とあわせて使うこ
Python でパッケージの開発版をインストールする方法についてご紹介します。 開発版のインストールは、バグ報告やテスト等でパッケージに貢献したいときや、自分でパッケージを開発したいとき等に必要になってきます。 (尚この記事では「パッケージ」ということばは、 pip でインストールできる「ディストリビューションパッケージ」という意味で使っています) Git リポジトリにあるパッケージをインストールしたい ローカルにあるパッケージをインストールしたい Git リポジトリにあるパッケージをインストールしたい Git で管理されたパッケージをインストールしたいときは次の形で pip コマンドを使えば OK です。
Python のパッケージ管理ツールの Poetry の tips です。 ライブラリ: Poetry Poetry はアプリケーション開発とパッケージ開発のどちらの用途にも利用できますが、私はアプリケーション開発でしか Poetry を使ったことがありません。そのため、以下にあげる tips はすべてアプリケーション開発に Poetry を利用するときの tips です。 本記事では Poetry のバージョン 1.0.0 を対象としています。 Poetry は仕様が比較的安定していますが、バージョンが上がると参考にならない場合もあるのでご注意ください。 目次 venv のファイルをプロジェクトディレクトリの下に置きたい venv を作らずグローバルにパッケージをインストールしたい アップデート可能なパッケージをチェックしたい Poetry 自体をアップデートしたい Docker コンテ
Python のキーワード yield の使い方について説明します。 目次 yield とは yield でジェネレータを作る yield でコンテキストマネージャを作る yield from でジェネレータを入れ子にする その他の使い方 yield とは yield は英語で「生み出す」「生む」「起こす」といった意味の単語とのことで、 Python における「 yield 」は、 コードを構成する構成要素(「キーワード」)のひとつで、 yield 式を作るためのもの です。 def get_abc(): yield 'a' yield 'b' yield 'c' print(list(get_abc())) # => ['a', 'b', 'c'] print(list(get_abc())) # => ['a', 'b', 'c'] 「 yield 式 」は、関数(あるいはメソッド)の
Python で正規表現を利用するときに複数行マッチを行う方法についてご紹介します。 Python で正規表現といえば、標準ライブラリの re です。 ライブラリ: re 上の記事では re の下にある関数を使った正規表現の利用方法をご紹介しましたが、今回は re.compile() で取得できる正規表現オブジェクトを使った方法を用いてご説明していきます。 まずはおさらいとして通常の(デフォルトの)単一行にマッチさせる方法から見ていきます。 単一行マッチ 単一行のマッチの場合は、 re.compile() の第 1 引数に正規表現パターンを渡してそのまま search() メソッドなどを実行すれば OK です。 次のサンプルではマークダウンテキストの中から見出しを抽出してリストを生成しています。 # coding: utf-8 import re from io import String
今回は Python のパッケージ「 Poetry 」を紹介します。 最初に Poetry とは何ぞや( WHAT )の説明をした後に Poetry の使い方( HOW )について説明します。最後に Pipenv からの移行方法についてかんたんに説明します。 Poetry とは Poetry とは 2018 年 2 月頃から開発がスタートした Python パッケージの管理ツールです。 ドキュメント: Poetry - Python dependency management and packaging made easy. リポジトリ: GitHub - python-poetry/poetry pip と venv を組み合わせて、 npm ・ bundle ・ composer 等他の言語で定番のパッケージ管理ツールと似た使用感で使える Python パッケージ管理機能を提供していま
Python で現在の関数の名前を取得する方法をご紹介します。 PHP でいうところの FUNCTION に相当する情報を取得するイメージです。 結論からいうと inspect モジュールの inspect.currentframe() の戻り値の f_code.co_name というプロパティで確認することができます。 import inspect def my_special_function(*args): print("Now in " + inspect.currentframe().f_code.co_name) if __name__ == '__main__': my_special_function() # => Now in my_special_function
''.join(['松', '竹', '梅']) # => '松竹梅' ' | '.join(['Home', 'About', 'Services']) # => 'Home | About | Services' 他の言語では join() は配列( Python でいうリスト)のメソッドとして用意されているケースが多いため、他のプログラミング言語を知った後に Python を学んだ人の多くがこの「 join() が文字列型のメソッドであること」に気持ち悪さを感じるようです。 なぜ Python の join() はリストではなく文字列型のメソッドとして用意されているのでしょうか。今回はこのあたりを見てみたいと思います。 経緯 文字列型の join() メソッドは 2000 年頃( Python の最新バージョンが 1.6 の頃)に、 string モジュール内の関数 string.j
Pipenv: Python Dev Workflow for Humans — pipenv documentation Pipenv とは Pipenv (読み方は「ピップエンブ」)は Python のパッケージ(≒ライブラリ)をプロジェクト単位で管理するためのライブラリです。 Requests の作者として有名な Kenneth Reitz 氏 によるプロジェクトで、 2017 年にスタートしたようです。 pip や virtualenv を裏で組み合わせて、よりよい DX (Developer eXperience) を提供するライブラリです。 Pipenv を導入すれば、プロジェクトのパッケージ管理において pip や virtualenv のコマンドを打つ必要がなくなります。 公式のドキュメントでは次のような説明がされています。 Pipenv — the officially
Python 3 の例外システムを活用する上で押さえておきたいポイントをまとめました。 例外システムに関しては過去に「 Python の例外処理」という記事も書いています。この記事と内容が重複しますが、例外に興味のある方はよろしければそちらもご覧ください。 Python の例外処理 目次 本記事の目次です。 基本形を押さえる finally を押さえる else を押さえる 組み込みの例外クラスのツリーを押さえる except のパターンを押さえる 例外オブジェクトのアトリビュートを利用する コンテキストマネージャを使う 順に見ていきましょう。 基本形を押さえる Python 3 の例外処理の基本形は次のとおりです。 import sys FILE_IN = 'sample.dat' try: # 例外が起こる可能性のある処理 file = open(FILE_IN) except Exc
Python の「パッケージ」と「モジュール」の違いについて説明してみます。 本題に入る前に数点お断りです。 この記事は長文です。 記事作成時の Python の最新バージョンは Python 3.6 です。 Python 3.6 の頃の認識にもとづいて書かれています。 この記事はある程度調査・確認をした上で書いていますが、私は Python の仕様や Python そのものの開発のプロではありません。あくまでも Python のいちユーザの認識であり間違っている可能性があります(とはいえ、なるべく正確に書こうというモチベーションで書いているので、詳しい方で間違いに気づいた方はご指摘いただけますと幸いです)。 Python の「パッケージ」と「モジュール」の違い Python のパッケージとモジュールの概念は少し複雑なので、ひとことでかんたんに説明することができません。 次の 2 通りの方
この場合、条件 cond が True の場合は a 、そうでない場合は b が返されます。 例を挙げてみます。たとえば、次の関数は引数が True と評価される場合だけその値を int() 関数に渡す関数です。
2017 年もいよいよ終わり、間もなく 2018 年ですね。 今年 1 年の振り返りのために 2017 年にリリースされた人気の GitHub リポジトリ についてまとめてみました。具体的には「 GitHub に認識されているリポジトリの言語が Python で」「スター数が 2500 以上のもの」をリストアップしてみました。 結果、引っかかったリポジトリの数は合計 32 個です。個人的には、マシンラーニング(機械学習)関連のリポジトリが非常に多いのが印象的でした。 以下私なりにかんたんな説明と description の翻訳を付けています。 1. system-design-primer 大規模システムの設計方法について紹介したドキュメントです。 リポジトリ名
今回は基本に立ち返って、 Python の組み込み型である「タプル」と「リスト」の違い、それと「タプルの使いどころ」について説明してみたいと思います。 「 Python タプル リスト 違い 」といったキーワードで Google 検索すると、多くのページで「リストとタプルは記法が異なります」「タプルはイミュータブルです」という説明だけがなされていて、それだけだとなぜタプルが用意されているのか、タプルはどんなときに便利なのかがわからないのではないかと思い、今回このテーマで書いてみようと思いました。 以下、 Python におけるリストが何なのかというのは読者の方はご存知だという前提でお話ししていきます。 まずはかんたんなおさらいとして、そもそもタプルとは何ぞやというところから見ていきましょう。 タプルとは Python における「タプル」とは、複数のデータを一直線に並べた「コレクション」タイ
Python での改行の扱い方についてまとめてみました。わりとピンポイントなテーマになりますが、興味のある方はご参考にしてみていただければと思います。 Python における改行コード 改行なしで出力する ファイルの中身を行単位で取得する 文字列の末尾の改行コードを取り除く 文字列を改行で分割する 改行コードをそのまま出力する ソースコード内で改行する ちなみに、この記事と似た話題の記事として次のような記事もあります。興味のある方はご覧になってみてください。 Python 3 の print() 関数の使い方 Python 2 の print 文の使い方 Python における改行コード まずは、基本中の基本ですが、今回のお話の前提となる「 Python における改行コード」について見ておきましょう。 Python における改行コードは \n です。
プログラミング言語「 Python 」を学べる英語のオンラインコースについてかんたんにまとめてみました。 システム開発・プログラミングというのはそれなりに歴史のある分野なので、日本語にも Python 関連の良書や良いサービスがたくさんあります(最近は特に増えてきたようです)。 ですので、プログラミングをわざわざ「英語で学ばないといけない」ということはありませんが、もしあなたが英語にある程度馴れがあり「プログラミングを学びたい」と考えているのであれば、日本語のサービスに加えて英語のサービスも選択肢に入れることを強くおすすめします。 英語でプログラミングを学ぶことには次のようなメリットがあります。 日本語のものだけから選ぶよりも選択肢が広いので、より自分の学習スタイルに合ったものが見つかる 各概念を英語の名称で学べるので、後からそれらを検索するときにスムーズ 英語の説明の方が日本語よりもシン
Python 2 と Python 3 では print() の機能が大きく異なります。 Python 2 の print 文については次の記事などを参考にしてみてください。 Python 2 の print 文の使い方 Python 3 の print() の基本的な使い方 Python 3 の print() は文字列を出力するための関数です。 宣言部は次のようになっており、出力対象のオブジェクトの他にもさまざまな引数を受け取ることができます。 各引数の意味合いはそれぞれ次のとおりです。 objects: 出力対象のオブジェクト。複数個渡すことができる。 sep: objects が複数個渡された場合の区切り文字(セパレータ)。デフォルトは半角空白。 end: 最後の要素の末尾に付けられる文字。デフォルトは改行文字。 file: 出力先。デフォルトは標準出力だが、ファイルオブジェクトな
lxml.etree は XML 形式のデータを Python で手軽に扱えるようにするライブラリです。 XML 形式のデータがカンタンに扱えるさまざまな機能を備えています。 私は jQuery と同等の機能を提供する PyQuery というライブラリを使うのに必要だったので入れました。 以下 lxml.etree の基礎的な使い方を見ていきます。 01 インスタンスの作成 lxml.etree において主役となるのは Element と呼ばれるクラスです。 from lxml import etree root = etree.Element("root") print type(root).__name__ # _Elementと表示 print root.tag child1 = etree.SubElement(root, "child1") root.append(etree.E
Python では関数の引数としてデフォルトの値を設定することができます。 今回はそのデフォルト値についての注意点をまとめてみます。 まず、デフォルトの値が与えられた引数については省略できるようになります。 import time def take_nap(duration = 60): print('Will sleep for {} seconds...'.format(duration)) time.sleep(duration) take_nap() # => Will sleep for 60 seconds... デフォルト値が与えられた引数の後にデフォルト値のない引数を置くことはできません。宣言時に SyntaxError が発生します。デフォルト値にない引数の後にデフォルト値のある引数を持ってくるようにしましょう。 def take_nap(duration = 60, c
Pythonで「特異メソッド」を作る方法をご紹介します。 特異メソッドというのは(私が知るかぎり)Ruby発祥のことばで、「特定のオブジェクトだけが持つメソッド」のこと。インスタンスメソッドは特定のクラスのインスタンスであればどのインスタンスからも呼び出すことができますが、特異メソッドはある特定のインスタンスからしか呼び出すことができません。 types ライブラリの MethodType というコンストラクタを使えばPythonでも特異メソッドを作ることができます。 具体的に見ていきます。 # ライブラリの読み込み from types import MethodType class Dog(object): def __init__(self, name): self.name = name d1 = Dog(“inu”) # 以下で特異メソッドを追加していきます # まずは特異メソッ
Traceback (most recent call last): File " <string>", line 1, in <module> File "/usr/local/Cellar/python3/3.5.1/Frameworks/Python.framework/Versions/3.5/lib/python3.5/locale.py", line 560, in getdefaultlocale return _parse_localename(localename) File "/usr/local/Cellar/python3/3.5.1/Frameworks/Python.framework/Versions/3.5/lib/python3.5/locale.py", line 487, in _parse_localename raise ValueError('u
Python で文字列を検索する方法をご紹介してみます。 ここでは 2 つの方法をご紹介します。ひとつは「文字列型」のメソッドを使う最もシンプルな方法、もうひとつは「正規表現」を使う方法です。 文字列型のメソッドを使う方法 正規表現を使う方法 1. 文字列型のメソッドを使う方法 まずは文字列型のメソッドを使う方法を見てみましょう。 対象パターンの場所(インデックス)を取得したい場合には find() メソッドを、単純に対象パターンが存在するかどうかだけを知りたい場合には in キーワードを使います。 find() メソッドを使う s = 'hello kyoto' print(s.find('kyo')) # => 6 print(s.find('tokyo')) # => -1 文字列型のメソッド find() は、引数に渡されたパターンが最初に現れるインデックスを返します。マッチしなか
Python でインタラクティブシェルの内容を保存する方法をご紹介します。 引数をつけずに python コマンドを実行すると起動するデフォルトのインタラクティブシェルにはそのような機能がないため、 IPython を使うのがよいでしょう。 IPython にはシェルの内容を保存する機能が備わっています。 $ ipython In [1]: a = 2 In [2]: b = 3 In [3]: c = a + b In [4]: %save saved_session.py 1-3 The following commands were written to file `saved_session.py`: a = 2 b = 3 c = a + b IPython のシェルの中で %save にふたつの引数を渡します。ひとつめは保存先のファイルの名前、ふたつめには対象行を指定します。対
シンプルで使いやすい Python の HTTP リクエスト用ライブラリ Requests を使っているときに文字化けを解消する方法をご紹介します。 import requests URL = 'https://www.1101.com/home.html' r = requests.get(URL) if r.status_code == 200: print(r.text.encode('utf-8')) # => 文字化けしたテキスト # 文字化けの原因はエンコーディング print(r.encoding) # => 'ISO-8859-1' # エンコーディングを変更すると # 自動で文字化けが解消されたテキストが取得できるようになる # エンコード utf-8 の部分は状況に応じて変更すれば OK r.encoding = 'Shift_JIS' print(r.text.enc
Python で特定のディレクトリをライブラリ読み込み対象パスに追加する方法をご紹介します。 Python でライブラリを読み込むディレクトリは sys.path の中にリストアップされています。
次のページ
このページを最初にブックマークしてみませんか?
『Life with Python』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く