pythonメモ

5358 ワード

エンコーディングについて:


 >>> ord('a')
97
>>>
chr
(
97
)
'a'
>>>
chr
(
ord
(
'a'
)
+
3
)
'd'
>>>
There is also a unichr function, returning the Unicode character whose ordinal is theunichr argument:
>>>
unichr
(
97
)
u
'a'
>>>
unichr
(
1234
)
u'\u04d2'

ベースクラスを呼び出し、関数を構築します。


class A():
    pass
class B(A):
    pass
(1) A.__init__()
(2)super(B,self).__init__() 
superを使用する利点は,クラス名Aが変更されたように継承関係を変更すると,superを使用して変更する必要がなく,(1)変更が必要であり,多くの場所で(1)を使用する場合,明らかに(2)優位性がないことである.

カスタム反復


class Fib():     def __init__(self):         self.a = 0         self.b = 1     def next(self):         self.a, self.b = self.b, self.a + self.b         return self.a     def __iter__(self):         return self      fibs=Fib() it = fibs.next() for f in fibs:     if f>100:         break     print f

反復器からリストへ


class TestIter():     value = 0     def next(self):         self.value+=1         if self.value>10:             raise StopIteration         return self.value     def __iter__(self):         return self ti = TestIter() l=list(ti) print l

単純反復ジェネレータ


def flatten(nested):     try:         for sublist in nested:             for item in flatten(sublist):                 yield item     except:         yield nested              l1 = [[1,2,['a',[8,0],'b'],3],[4,5],[6]] for item in flatten(l1):     print item

スライスについて


num = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] print num[3:6]
[4,5,6]
1.下付き文字は0から、左閉じ右開き、すなわち3位置の数をとる、6位置の数は範囲内ではない.
2.スライス中の左のインデックスが右のプレイよりも出現した場合、結果ビットはnum[-3:0]、-3はリスト中の最後から3番目の数値8を表し、0は最初の数値1を表し、この場合左の8を満たして右の0に現れるので、空のリストが得られる
3.右側の値が最大リスト数より大きい場合、デフォルトは最大リスト数に等しいnum[3:100]のように、100がnumの数よりはるかに大きい場合、デフォルトは最大10をとり、結果は[4,5,6,7,8,9,10]である.
4.スライスされた部分にシーケンスの最後の要素が含まれている場合、最後のインデックスを空にするだけでよい.例えば、最後の3つの数値、num[-3:]結果:[8,9,10]、同様にnum[:3]を使用して前の3つの要素を取得することができる.
5.すべての要素を取る:num[:]

OSモジュール


os.getcwd()#取得前のファイルが存在する作業ディレクトリ
os.path.join('path 1','path 2','path 3')#パスを「」でつなぎ合わせ、path 1path 2path 3
print os.path.join(os.getcwd(), 'templates','index.html').replace('\','/')と
print os.path.join(os.path.dirname(__file__),'templates','index.html').replace('\','/')は同じ効果を実現でき、djangoのsettintsではTEMPLATES_DIRSはdirname(_file_)を使用やっと

カスタムimport*インポートモジュール


パッケージの__init__.pyコードは__all__というチェーンテーブルを定義し、チェーンテーブルに与えられたモジュール名に従ってインポートされます.新しいバージョンのパッケージがリリースされると、著者は任意にこのチェーンテーブルを更新することができます.パッケージ作成者がimport*をインポートしたくない場合、パッケージ内のすべてのモジュールをインポートしない場合は、サポートしないことを決定することもあります(import*).例えば、Sounds/Effects/_init__.pyこのファイルには、次のコードが含まれます.
__all__ = ["echo", "surround", "reverse"]

これは、from Sound.Effects import *文がSoundパッケージから3つ以上の名前付きサブモジュールをインポートすることを意味します.

モジュールのツール関数を探る

dir([obj]):objオブジェクトのすべての属性を表示し、パラメータなしで【グローバル変数の名前】を表示します.
help([obj]):objドキュメント文字列を所定のフォーマットで表示し、パラメータがなく、【インタラクティブヘルプに入る】
int(obj):objをintタイプに変換
len(obj):オブジェクトの長さを返します
Open(filename,mode)modeモードでfilenameファイルを開く
[x]range([start,]stop[,step])はintタイプのリストを返し、開始値はstart、終了値はstop-1、間隔値はstepである.デフォルトsetpは1、startは0
raw_Input([string])は、ユーザが入力した文字列を受信し、stringパラメータがヒント情報として使用される
str(obj)はオブジェクトを文字列に変換する
type(obj)取得オブジェクトのタイプ(戻り値自体がtypeオブジェクト)

同じ行に複数の文を書く


import sys; x = 'foo'; sys.stdout.write(x);

変数名がキーワードかどうかを確認


import keyword;pprint.pprint(keyword.kwlist);print keyword.iskeyword('not')

詩Pythonic


cmd --> python --> import this

参照数

はカウントを引用して決定しており、変数のライフサイクルは、一般的には0の場合、ゴミに回収される.
増加数:
(1)オブジェクト作成x=1
(2)別名をy=xとする
(3)パラメータとしてfoo(x)を渡す
(4)容器元素となる[x,2,3,4]
減少数:
(1)作用範囲から離れる.オブジェクトの参照が破棄されると、関数の実行が終了すると、その役割ドメインの範囲を離れ、すべてのローカル変数が破棄されると、参照カウントが減少します.
(2)参照変更.x = 1; y = x; このとき1オブジェクトの参照カウントは2,x=3であり,このときxの参照は3オブジェクトに変更され,1は1つの参照カウントに減少する.
(3)オブジェクト参照表示削除.del x
(4)容器から除去するlist 1.remove(x)
(5)容器自体の廃棄、del list 1

ソートについて:


temp_list.sort(key=lambda x:x.report_date)
によって、要素のreport_date属性ソートtemp_list
元:
2012-01-05
2012-01-04
2012-01-03
新規:
2012-01-03
2012-01-04
2012-01-05

日付の設定:

datetime.datetime.strptime(str(now)+"00:00:00", "%Y-%m-%d %H:%M:%S")
2012-05-07 00:00:00
datetime.datetime.strptime(str(now)+"23:59:59", "%Y-%m-%d %H:%M:%S")
2012-05-07 23:59:59
>> 'my_name'.title()
>>My_Name