サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
体力トレーニング
www.lifewithpython.com
Mac には Python が同梱されており、その Python を使うと辞書アプリにアクセスすることができます。実際には 辞書アプリ API が Objective C 用に用意されており、 さらに、その Objective C には PyObjC を使って Python からアクセスできる ということで、 Python から辞書アプリへのアクセスが可能となっています。 Python → Objective C → 辞書アプリという流れですね。 早速実際のサンプルコードを見てみたいと思います。 mac_dict_app_short.py: #!/usr/bin/python2.7 # coding: utf-8 # 辞書アプリにアクセスするためのパッケージ from DictionaryServices import DCSGetTermRangeInString, DCSCopyTex
Pythonで特定のオブジェクトのアトリビュートを確認する方法についてご紹介します。 オブジェクトのアトリビュートの一覧を取得するには dir() 関数を使います。 s1 = "hello" n1 = 5 print dir(s1) # str型のオブジェクトのアトリビュート/メソッド一覧を表示 print dir(n1) # int型のオブジェクトのアトリビュート/メソッド一覧を表示
Python で辞書にアイテムが存在しない場合のデフォルト値の設定方法をご紹介します。 Python の辞書を使っていると、次のような処理をしたくなるときがあるかと思います。 # 各朝食メニューの回数を調べる breakfast = ['kome', 'pan', 'kome', 'kome', 'cereal', 'pan', 'kome'] numbers = dict() for b in breakfast: if b in numbers: numbers[b] += 1 else: numbers[b] = 1 print(numbers) # => {'pan': 2, 'kome': 4, 'cereal': 1} この処理はもちろん間違っていませんが、もっとシンプルにわかりやすく書きたい場合はデフォルト値を使うのが便利です。デフォルト値を使うにはいくつかの方法があります。
Python の dict 型のオブジェクトをキーやバリューでソートしてから取り出す方法についてご紹介します。 シンプルでかんたんなのは sorted() 関数に key オプションを渡す方法です。 公式ドキュメントによると sorted() 関数の宣言部は次のとおりとされています。
Python で標準入力から入力を得て 1 行ずつ処理する方法をご紹介します。 ちょっとしたコマンドラインツールを作るときに 1 行ずつ処理できれば便利かと思います。 やり方はいくつか考えられるかと思いますが、ひとつカンタンな方法は fileinput ライブラリを使う方法です。 # ライブラリを読み込み import fileinput # 入力の各行に対して処理を行う for line in fileinput.input(): # some process... pass
Pythonでワンライナーコマンドを書く方法をご紹介します。 Pythonでワンライナーを書くには c オプションを使います。
今回は Python でゼロパディングする方法をご紹介します。 int の場合 str の場合 1. int の場合 整数型の場合は str 型の format() メソッドや % 演算子を使う方法が最もシンプルかと思います。 format() メソッド: number = 50 number_padded = '{0:04d}'.format(number) print(number_padded) # => '0050'
Python のデコレータの使い方について見てみます。 デコレータとは、関数やクラスを「装飾」する機能のこと。デコレータを使うことで、既存の関数やクラスの中身を直接触ることなく、その外側から機能を追加したり書き換えたりすることができます。 Python では、関数やクラスもオブジェクトということもあって、自分オリジナルのデコレータをかんたんに作ることができます。デコレータは @ 文字を使用して記述します。 具体的に見ていきましょう。次のような hello 関数が定義されているものとします。 # あいさつを返す関数 def hello(): return "konichiwa" print hello() # => konichiwa # 定義したとおりの結果が返ってくる # デコレータパターンを使うために # 関数を受け取り関数を返す関数を定義する def mydec(func): def
Python 3 の文字列型 str に関する基本的な演算についてご紹介します。 以下の例では次の s1 s2 を使います。
import collections s1 = 'すもももももももものうち' count_dict = collections.Counter(s1) # => Counter({'も': 8, 'ち': 1, 'す': 1, 'の': 1, 'う': 1}) Counter クラスのインスタンスは、辞書のような形で要素とその個数を格納したオブジェクトとなります。 上の例では文字列 s1 を渡していますが、リストを渡した場合でも同様に動作してくれます。 この Counter インスタンスから各要素を取り出すには items() keys() values() など辞書型と同名のメソッドを使います。
Python で変数が定義されているかどうかをチェックする方法をご紹介します。 最もシンプルなやり方は、変数へのアクセスを試みて例外をキャッチする方法です。
Python でベクトル演算を行う方法をご紹介します。 結論からいえば「 numpy 」というライブラリを使う方法が最も一般的かと思います。 以下、 numpy を使った基本的なベクトル演算のやり方を見ていきます。 足し算はこんな感じ。 # ライブラリの読み込み from numpy import array # ベクトル演算をサポートした array インスタンスの生成 v1 = array([1, 3]) v2 = array([2, 5]) # ベクトル同士の演算 v3 = v1 + v2 print v3 # => array([3, 8]) # ベクトル同士の足し算
Pythonで、実行中のスクリプトの名前を取得する方法をご紹介します。 と構えるまでもなくやり方はかんたんで、組み込みの変数 file を使います。
Python には staticmethod と classmethod というよく似たふたつのデコレータが存在します。一見わかりづらいこれらのちがいについて今回は見ていきます。 結論からざっくり言うと両者のちがいは次のとおりになるかと思います。 staticmethod の高機能版が classmethod ふたつのちがいは「引数の扱い」 staticmethod ではメソッドは実引数をそのまま受け取る classmethod ではクラス自身が暗黙的に第一引数として挿入される ことばだけではわかりづらいので、例を見てみましょう。 class MyClass(object): @staticmethod def static_method(*args): print(*args) @classmethod def class_method(*args): print(*args) MyCl
Python のパッケージ管理コマンドである pip 自身をアップデートする方法を紹介します。 PyPI パッケージをアップデートするには pip install に --upgrade オプションを付けて実行します。
Pythonで、既存のクラスにインスタンスメソッドを追加する方法をご紹介します。 既存のクラスにメソッドを追加するには次の手順を踏みます。 まず関数を別途定義してから その関数名をクラスのアトリビュートにする 具体例を見てみます。 # __init__ メソッドだけを備えた Dog クラス class Dog(object): def __init__(self, name): self.name = name # 以下で Dog クラスに count_number というインスタンスメソッドを追加する # 01 まずは関数を定義 def count_number(self): print "%s counts: one! one!" % self.name # 02 定義した関数をクラスのアトリビュートに追加 Dog.count_number = count_number # 結果 ta
Python の関数がどのように宣言・定義されているのかを調べる方法をご紹介します。 名前そのままの inspect.getsource 関数を使うと、関数のソースコードを確認することができます。 ```python import inspect requests の get 関数を調べる import requests inspect.getsource(requests.get) => def get(url, **kwargs): """Sends a GET request. :param url: URL for the new :class:Request object. :param **kwargs: Optional arguments that request takes. :return: :class:Response <response> object :rtyp
Python の import 文の使い方をご紹介します。 Python で他のモジュールやパッケージを読み込む方法といえば import ですが、その import にもいろいろな使い方があります。以下、いくつか代表的な使い方を見てみましょう。 ライブラリ全体を読み込む ライブラリ全体を読み込みたい場合は import ライブラリ名 と書きます。
Python でインストール済みのライブラリをまとめてアンインストールする方法をご紹介します。 大きな流れは次のとおりです。 インストール済みのライブラリをリストアップ リストを編集 pip uninstall コマンドでアンインストール 以下順に見ていきます。 1. インストール済みのライブラリをリストアップ まずは、どんなライブラリがインストールされているのかチェックします。 もしものときのために復元用をバックアップしておくのがよいでしょう。 requirements_bk.txt は復元用、 uninstall.txt はアンインストール用です。 2. リストを編集 uninstall.txt を編集し、「削除したいライブラリ」のみの一覧を作成します。削除したいライブラリはリストに残し、残しておきたいものはリストから削除します。 たとえば次のような感じにします。 cssselect=
Python の予約語について見てみます。 予約語とは構文上特殊な意味を持つことばのことです。 変数や関数に予約語と同じ名前をつけることはできません。 Python では次の単語が予約語として使われています。 and as assert break class continue def del elif else except exec finally for from global if import in is lambda not or pass print raise return try while with yield それぞれの使いどころは次のとおりです。 and: 論理演算の論理積 as: モジュールの import 時、ファイルの with 読み込み時の名前割り当て assert: 与えられた式が False なら Error をあげる assert 文 break: ル
Pythonのライブラリをまとめてインストールする方法をご紹介します。 pip がインストールされていれば、 pip install の -r オプションで一括インストールが可能です。 $ pip install -r requirements.txt $ pip install --require requirements.txt # このように書いても OK requirements.txt の中身は次のような形でライブラリの一覧を書きます。 cssselect==0.9.1 lxml==3.2.4 mechanize==0.2.5 pyquery==1.2.6 requests==2.0.1 selenium==2.37.2 wsgiref==0.1.2 この形は pip freeze の出力形式と同じなので、特定のライブラリ環境を別のところに移したい場合なんかにも pip free
Pythonで行列演算をする方法をご紹介します。 Pythonで行列を扱うには「 numpy 」というライブラリを使う方法が一般的です。 基本的な使い方を以下、見ていきます。 行列オブジェクトの生成 行列オブジェクトの生成は matrix 関数で行います。 import numpy as np # 文字列から生成 m1 = np.matrix('1 2; 3 5') # リストから生成 m1 = np.matrix([[1, 2], [3, 5]])
Python の print はデフォルトで末尾に改行を追加して出力します。 これを末尾に改行を加えずに出力する方法をご紹介します。 Python 3 の場合 Python 2 の場合 Python 3 の場合 Python 3 の print は Python 2 とは違い print() 関数です。 print() 関数はデフォルトで末尾に改行を追加しますが、引数 end を使うと末尾に出力する文字を変更することができます。 end に空文字 "" を渡せば改行が追加されません。 print("hello", end="") print("hello", end="") # => hellohello
Python で標準入力でパスワードを入力してもらう方法をご紹介します。 パスワードを入力させるときには、通常標準入力を受け付けるときとは異なり、入力内容を画面に表示しないようにしたいものです。 パスワードを入力してもらうときには標準添付の getpass ライブラリを使うのが便利です。 getpass — Portable password input — Python 公式ドキュメント getpass ライブラリには raw_input() 関数と同じような形で使える getpass() 関数が入っています。 # coding: utf-8 from getpass import getpass # 名前とパスワードの入力を受け付ける name = raw_input('your name: ') password = getpass('your password: ') 以上です。
Pythonの virtualenv で Python のインタプリタを指定する方法をご紹介します。 方法はかんたんで、 virtualenv コマンド実行時に python オプションでパスを指定するだけです。
Pythonでオブジェクトのメソッドを調べる方法をご紹介します。 大きく2つの方法があるかと思います。 組み込みの関数で調べる inspect ライブラリの関数で調べる 順に見ていきます。 組み込みの関数で調べる こちらは特にライブラリを読み込まなくても使える方法です。 組み込みの dir getattr callable 関数を使います。こんな感じ。 # メソッドを調べたいオブジェクト # 今回は適当に文字列を使う obj = "" # アトリビュート一覧のうち # callable なオブジェクトのみを表示する for attr in dir(obj): if callable(getattr(obj, str(attr))): print attr
Pythonで多重リストをフラットにする(平滑化する)方法をご紹介します。 多重リストの階層が必ず2階層と決まっている場合には、リスト内包表記で次のように書くことができます。 a = [[1, 3], [5, 7], [9]] def flatten(nested_list): """2重のリストをフラットにする関数""" return [e for inner_list in nested_list for e in inner_list] flatten(a) # => [1, 3, 5, 7, 9]
Python で 2 つのリストの要素同士の演算を行う方法をご紹介します。 要素同士の演算には次の 2 つがあるかと思います。 i 番目の要素同士をかけあわせる すべての要素の組み合わせをかけあわせる 以下、それぞれのやり方を見ていきます。 i 番目の要素同士をかけあわせる 「 zip() と内包表記」または map() を使う方法が便利です。 zip() と内包表記: li1 = [1, 3, 5] li2 = [2, 4, 6] combined1 = [x * y for (x, y) in zip(li1, li2)] # => [2, 12, 30]
selenium ライブラリは、同名の Selenium というブラウザ操作用のツールがあるのですが、その Python バインディング、いわゆる「 Selenium の Python 版」です。 selenium ライブラリを使うことで Firefox などのブラウザを Python からかんたんに操作できるようになります。 以下、使い方をかんたんに見ていきます。まずはインストールから。 インストール pip が入っていれば、他のライブラリと同じように pip install でインストールすることができます。 Mac 環境だとこの形でインストールできますが、 Windows 環境では少し異なるかもしれません。 Python 以外の情報も含む Selenium 全体の公式ダウンロードページはこちらになります。 Downloads | Selenium 使い方 基本的な使い方を見ていきます
次のページ
このページを最初にブックマークしてみませんか?
『Life with Python』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く