Python

Python の type 関数について思ったこと

型判定の関数名は、次の2つの理由から checktype(object) とかにしてほしかったな..(setattr 関数みたいな感じで)。

Python のクラス変数とインスタンス変数って何?

インスタンス変数は、インスタンスオブジェクトの属性です。クラス変数は、クラスオブジェクトの属性です。

Python の関数とメソッドの違いって何?

メソッドは呼び出されると、自分を呼び出してきたインスタンスオブジェクトを関数の第一引数に代入して、関数を実行します。

Python を高速化したい

表. 比較したもの一覧 項番 低レベルな書き方 高レベルな書き方 > 速い書き方 1 変数の参照 属性の参照 > 変数の参照 2 ベタ書き 関数 > ベタ書き 3 while 文 for 文 > for 文 4 for 文 list 内包表記 > list 内包表記 5 1次元リスト 2次元リスト > 2次元…

Python の is と == の違い

isオブジェクトが同じであるかどうかを判定する比較演算子 ==オブジェクトの値が等しいかどうかを判定する比較演算子 正確には値が同じであるかどうかを確認するように実装されて、あるいはしなければならず、その実装はクラスごとに異なります。 4.3. 比較 …

Python で 1 行を最大 79 文字以内に抑える方法と 1 行が 79 文字以内である理由

1 行を最大 79 文字以内に抑える方法 1 行 79 文字と言う制限が、実は結構重くて最初は無視するような設定にしようかと思っていたのですが、最近は遵守しています。いくつか回避方法があります。 1. バックスラッシュ \ を使う。 def eq(rectangle_a, rectan…

Python でリストを比較する。

1. == 比較演算子 値が同じなら True >>> a = [1, 2, 3] >>> b = [1, 2, 3] >>> c = [1, 3, 2] >>> a == b True >>> >>> # 順番が違っていていると False >>> a == c False 2. is 比較演算子 同じオブジェクトなら True >>> a = [1, 2, 3] >>> b = [1, 2, 3]…

Python でインターフェイスを持たせたい。

Python は、動的言語なので Java で言うところのインターフェイスに相当するものはありません。ただ、共通のメソッドを持たせたい場合は2つほど方法があります。 例えば、こんなシチュエーションだとして... class A: pass class B: pass # こいつを追加し…

Python で割り算をするときの切り上げと切り捨て

3 つのやり方 Python で割り算をするときの繰り上げと切り捨て いくつかやり方がある。 1. 演算子のみを使う。 これがオススメ。欠点は、切り上げが伝わり辛い。利点は、表記が簡潔で実行速度が 10 倍速く、何も import しなくていい。 # 切り捨て 4 // 3 # …

Python で素数のリストを得る方法 エラトステネスの篩

◯ 簡単なもの def primes(n): is_prime = [True] * (n + 1) is_prime[0] = False is_prime[1] = False for i in range(2, n + 1): for j in range(i * 2, n + 1, i): # j を素数の候補から外す # j = i * k is_prime[j] = False return [i for i in range(n …

How to get prime list by Python

Sieve of Eratosthenes def primes(n): is_prime = [True] * (n + 1) is_prime[0] = False is_prime[1] = False for i in range(2, n + 1): for j in range(i * 2, n + 1, i): # Exclude j from candidate of prime. # j = i * k is_prime[j] = False return…

builder も作った..。

import collections def main(): # @immutable('x1', 'y1', 'x2', 'y2', 'is_line', 'is_dot') # class Region(object): region1 = Region(0, 0, 1, 1) print(region1) # def __init__ の代替もできてる。 # self.is_rectangle = value とはできない。self …

isimmutable function in Python

import string import random def usage(): # int print(isimmutable(1)) # True # str print(isimmutable('Hello, world!')) # True # user defined class class C: pass print(isimmutable(C())) # False # dict print(isimmutable({'a': 1})) # False # s…

Python の __new__ と __init__ の違い

1. 違い 3つの違いがあります。 __new__ __init__ 1 インスタンスオブジェクトが 生成される前に呼ばれます。 インスタンスオブジェクトが 生成された後に呼ばれます。 2 インスタンスオブジェクトを 生成 new して返します。 self の属性に値を 設定し初期…

Python のクラスオブジェクトとインスタンスオブジェクトって何?

インスタンスオブジェクトは、変数に代入できるものを指しています。

How to send an email from Gmail by Python.

usage $ python3 sample.py sample.py """Send an email from Gmail. Before execute this code, turn on the flag "Allow less secure apps" from the follwoing link. https://myaccount.google.com/lesssecureapps """ import smtplib import email.mime.…

Python で実行時間を計測したい。

ここでは 4 つの方法を紹介します。 項番 名称 説明 1 timeコマンド スクリプト全体の時間 2 timeモジュール スクリプトの一部の時間自分が書いたコードのなかで特定のコードの時間を計測したい時に使う。 3 cProfileモジュール スクリプトの一部の時間遅い…

Python で list を条件をつけて要素を削除したい。

もちろん list.remove 関数はありますが 条件をつけて削除したい場合にはこんな感じで。 1. list comprehension def remove_equal(lst, v): new_lst = [e for e in lst if e != v] lst.clear() lst.extend(new_lst) del new_lst これがオススメ。最速だし記…

Python の関数、メソッドの命名について

get を使わない。 原則、副作用の無く新たにオブジェクトを生成しない関数, メソッドは原則「名詞」を使うのが望まい。 # x noun = obj.get_noun() # o noun = obj.noun() 感動した記事 Getter/Setterは悪だ。以上 もし get がダメなら、give ならどうだろう…

Python でデータ構造の木について

疑問 1. Node class と Tree class をそれぞれ個別に定義するか、それとも Tree class でのみで定義するか。 結論:Tree class でのみで定義するべき。 ほとんどの初心者向けのサンプルコードは Tree class のみでの実装である。初心者向けじゃないコードは…

Initializing two dimensional dictionary in Python

◯ usage >>> table = dict2d(['a', 'b', 'c']) >>> table['a']['b'] = 100 >>> table['a']['b'] 100 ◯ definition def dict2d(key_list, default=None): return dict1d(key_list, dict1d(key_list, default)) def dict1d(key_list, default=None): n = len(k…

Python で class のみ reload

Python で class のみ reload させる方法

Python のイテレータとは

イテレータを使えば、本来 for 文で使えない木 tree などの自分で定義したクラスを for 文で回せるようになります。

Python 「すべてのオブジェクトは、同一性 (identity)、型、値をもっています。 」

-

Python で mutable と immutable の違い

mutable ... 値が参照しているオブジェクトを切り替えられる。immutable ... 値が参照しているオブジェクトを切り替えられない。

Python の import, module とは何ぞや

例えば を計算したいな、と思います。その時は、次のように書きます。 >>> import math # math module を import >>> math.sqrt(2) # math module の中にある sqrt と言う関数を使用 1.4142135623730951 module は平たく言えば、関数、クラスがはいった箱に…

Rubyとpythonって、{}がなくって、可読性が悪くないですか?

Rubyとpythonって、{}がなくって、可読性が悪くないですか? 慣れもあるんだろうけど・・・、{}はよい目印になる。 Rubyとpythonって、{}がなくって、可読性が悪くないですか? インデントが正しくなされていれば、 括弧の有無による可読性に違いは無…

Mac で Python の環境を作る。

公式のインストール手順へのリンクを示しつつ、簡単にコマンドを示したいと思います。

Mac で vim を Python の開発環境にする。

① 構文の色付け, ② 構文チェック Syntastic pyflakes, ③ 自動補完 jedi-vim

jedi-vim failed to initialize Python

Error: jedi-vim failed to initialize Python: jedi#setup_py_version: Vim(py3file):Traceback (most recent call last): (in function jedi#init_python[3]..<SNR>52_init_python[50]..jedi#setup_py_version, line 18)If you are using OS X and already inst</snr>…