Python常用小知識点
3599 ワード
zip
辞書はキーまたは値で並べ替えられます.
存在するか否かを検索する.pycファイル
义齿
[1,2,3,4.....,100]を[[1,2,3],[4,5,6],[7,8,9]....]に変換する.
時間消費装飾器
親メソッドの呼び出し
python3
python2
Python自省
自省とは、オブジェクト向けの言語で書かれたプログラムが実行時に、オブジェクトのタイプを知ることである.簡単に言えば、実行時に取得できるオブジェクトのタイプである.例えばtype()、dir()、getattr()、hasattr()、isinstance().
Pythonリロード
ご承知のとおりです.http://www.zhihu.com/question/20053359
関数のリロードは主に2つの問題を解決するためです.可変パラメータタイプ. 可変パラメータ個数.
また、基本的な設計原則は、2つの関数がパラメータタイプとパラメータ個数が異なる以外は、その機能が完全に同じである場合にのみ、関数リロードを使用し、2つの関数の機能が実際に異なる場合には、リロードを使用するのではなく、1つの名前の異なる関数を使用するべきである.
では、場合1では、関数機能は同じですが、パラメータタイプが異なり、pythonはどのように処理しますか?答えは処理する必要はありません.pythonは任意のタイプのパラメータを受け入れることができるので、関数の機能が同じであれば、異なるパラメータタイプはpythonで同じコードである可能性が高く、2つの異なる関数を作る必要はありません.
では、場合2では、関数機能は同じですが、パラメータの個数が異なり、pythonはどのように処理しますか?答えはデフォルトのパラメータであることを知っています.欠落しているパラメータをデフォルトパラメータに設定すると、問題が解決します.関数の機能が同じだと仮定すると、欠けているパラメータは結局必要です.
はい、状況1と状況2に解決策があるため、pythonは関数の再ロードを必要としません.
Pythonの私有化 xx:公有変数 _x:単一の前置き下線、プライベート属性またはメソッド、from somemodule import*はインポートを禁止し、クラスオブジェクトとサブクラスは にアクセスできます. __xx:二重前置き下線で、サブクラスの属性命名と衝突しないようにし、外部から直接アクセスできない(名前が変更されたのでアクセスできない) _xx_:二重前後下線、ユーザー名空間の魔法オブジェクトまたは属性.例:init_ , __ 自分でこのような名前を発明しないでください. xx_:Pythonキーワードとの競合を回避するための下線
In [1]: a = ['a','b']
In [2]: b = [18,19]
In [3]: dict(zip(a,b))
Out[3]: {'a': 18, 'b': 19}
辞書はキーまたは値で並べ替えられます.
In [1]: dic = {'a':31, 'bc':5, 'c':3, 'asd':4, 'aa':74, 'd':0}
In [2]: sorted(dic.iteritems(),key=lambda d:d[1],reverse=True)
Out[2]: [('aa', 74), ('a', 31), ('bc', 5), ('asd', 4), ('c', 3), ('d', 0)]
存在するか否かを検索する.pycファイル
# coding=utf-8
import os
res = []
for root, directory, files in os.walk('./'):
print root
for filename in files:
name, suf = os.path.splitext(filename)
if suf == '.pyc':
res.append(os.path.join(root, filename))
print res
义齿
In [1]: a = [1, 2, 3, 4, 5, 5, 4, 3, 2, 1]
In [2]: list(set(a))
Out[2]: [1, 2, 3, 4, 5]
In [3]: new_ids = []
In [4]: for i in a:
...: if i not in new_ids:
...: new_ids.append(i)
...:
In [5]: print new_ids
[1, 2, 3, 4, 5]
In [2]: ids = [1,4,3,3,4,2,3,4,5,6,1]
In [3]: func = lambda x,y:x if y in x else x + [y]
In [4]: reduce(func,[[],] + ids)
Out[4]: [1, 4, 3, 2, 5, 6]
[1,2,3,4.....,100]を[[1,2,3],[4,5,6],[7,8,9]....]に変換する.
In [1]: res = []
In [2]: for i in range(1,100,3):
...: res.append([i,i+1,i+2])
...:
In [3]: print res
[[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12], [13, 14, 15], [16, 17, 18], [19, 20, 21], [22, 23, 24], [25, 26, 27], [28, 29, 30], [31, 32, 33], [34, 35, 36], [37, 38, 39], [40, 41, 42], [43, 44, 45], [46, 47, 48], [49, 50, 51], [52, 53, 54], [55, 56, 57], [58, 59, 60], [61, 62, 63], [64, 65, 66], [67, 68, 69], [70, 71, 72], [73, 74, 75], [76, 77, 78], [79, 80, 81], [82, 83, 84], [85, 86, 87], [88, 89, 90], [91, 92, 93], [94, 95, 96], [97, 98, 99]]
時間消費装飾器
# coding=utf-8
def timeCon(func):
import time
def wrapper(*args, **kw):
t = time.clock()
func(*args, **kw)
print '%.9f' % (time.clock() - t)
return wrapper
@timeCon
def foo():
print 'hello world'
foo()
親メソッドの呼び出し
python3
super().__init__(name)
python2
super(Bosi,self).__init__(name)
Cat.__init__(self,name)
Python自省
自省とは、オブジェクト向けの言語で書かれたプログラムが実行時に、オブジェクトのタイプを知ることである.簡単に言えば、実行時に取得できるオブジェクトのタイプである.例えばtype()、dir()、getattr()、hasattr()、isinstance().
Pythonリロード
ご承知のとおりです.http://www.zhihu.com/question/20053359
関数のリロードは主に2つの問題を解決するためです.
また、基本的な設計原則は、2つの関数がパラメータタイプとパラメータ個数が異なる以外は、その機能が完全に同じである場合にのみ、関数リロードを使用し、2つの関数の機能が実際に異なる場合には、リロードを使用するのではなく、1つの名前の異なる関数を使用するべきである.
では、場合1では、関数機能は同じですが、パラメータタイプが異なり、pythonはどのように処理しますか?答えは処理する必要はありません.pythonは任意のタイプのパラメータを受け入れることができるので、関数の機能が同じであれば、異なるパラメータタイプはpythonで同じコードである可能性が高く、2つの異なる関数を作る必要はありません.
では、場合2では、関数機能は同じですが、パラメータの個数が異なり、pythonはどのように処理しますか?答えはデフォルトのパラメータであることを知っています.欠落しているパラメータをデフォルトパラメータに設定すると、問題が解決します.関数の機能が同じだと仮定すると、欠けているパラメータは結局必要です.
はい、状況1と状況2に解決策があるため、pythonは関数の再ロードを必要としません.
Pythonの私有化