Pythonの冷たい知識

6187 ワード

1.省略記号も対象...省略記号ですが、Pythonでは全て対象です.例外ではありません.
PythonではEllipsisと呼ばれています.
Python 3では直接書いて...これを手に入れることができます.
>>> ...
Ellipsis
>>> type(...)

2では...この文法はなく、Ellipsisを直接書いて取得するしかありません.
>>> Ellipsis
Ellipsis
>>> type(Ellipsis)

>>>

ブール値に変換すると真になります
>>> bool(...)
True

最後に、これは単例です.
>>> id(...)
4362672336
>>> id(...)
4362672336

これは何の役に立つのですか.それはNumpyの文法糖で、Numpyを遊ばない人は、何の役にも立たないと言えるそうです.
ネットで見たのはこれだけ...パスの代わりに使うのは、ちょっと使いますが、使わなければならないわけではありません.
try:
    1/0
except ZeroDivisionError:
    ...

2.類頭文字は必ずしも大文字ではない
通常、私たちが作成したコードは、クラス名の頭文字が大文字であることを黙認しているようで、インスタンスが小文字であるという準則があります.しかし、これは強制的ではありません.あなたが逆にしても大丈夫です.
しかし、いくつかの内蔵クラスがあり、頭文字は小文字で、インスタンスは大文字です.
例えばboolはクラス名であり、True、Falseはその例である.例えばellipsisはクラス名であり、Ellipsisはインスタンスである.またint,string,float,list,tuple,dictなどの一連のデータ型はクラス名であり,いずれも小文字である.
3.増分賦値の性能がより良い+=および*=これらの演算子を増分割付演算子と呼ぶ.
ここでは+=を用いて,以下の2つの書き方を用い,効果的に等価である.
#    
a = 1 ; a += 1

#    
a = 1; a = a + 1
+=その背後にある魔法の使い方は_iadd__,この方法が実現しなければ後退して次を求め、__を用いる.add__ .
この2つの書き方にはどんな違いがありますか?
リストで例a+=bを用いて__を用いるiadd__ の場合はa.extend(b)を使用しているようで、__を使用するとadd__ では、a=a+bで、前者は元のリストに直接拡張し、後者は元のリストから値を取り出し、新しいリストで拡張してから、新しいリストオブジェクトを変数に返すので、後者の消費は明らかに大きい.
したがって、インクリメンタル付与が使用できる場合は、できるだけ使用します.
4.andとorの取値順
andとorは私たちがよく知っている2つの論理演算子です.私たちは通常それを判断するために使っていますが、それを使って値を取ることはめったにありません.
1つのor式のすべての値が真の場合、Pythonは最初の値を選択し、and式は2番目を選択します.
>>>(2 or 3) * (5 and 7)
14  # 2*7

5.解釈プロンプトの変更方法
通常、私たちは端末でPythonコマンドを実行します.
>>> for i in range(2):
...     print (i)
...
0
1
>>>...この2つのプロンプトも修正できると思いますか?
>>> import sys                      
>>> sys.ps1                         
'>>> '                              
>>> sys.ps2                         
'... '                              
>>>                                 
>>> sys.ps2 = '................'                 
>>> sys.ps1 = 'Python    >>>'       
Python    >>>for i in range(2):     
................    print (i)                    
................                                 
0                                   
1  

06.デフォルトパラメータは可変オブジェクトでないことが望ましい
関数のパラメータは3種類あります
  • 可変パラメータ
  • デフォルト
  • キーワードパラメータ
  • 既定のパラメータを渡すと、初心者は雷の穴を踏みやすいです.
    まず例を見てみましょう
    def func(item, item_list=[]):
        item_list.append(item)
        print(item_list)
    
    func('iphone')
    func('xiaomi', item_list=['oppo','vivo'])
    func('huawei')

    ここで、一時停止して、何を出力するか考えてみてください.
    考えてみると、あなたの答えは次のように一致していますか?
    ['iphone']
    ['oppo', 'vivo', 'xiaomi']
    ['iphone', 'huawei']

    もしそうなら、この部分をスキップしてもいいです.そうでなければ、下を見て、ここで分析してください.
    Pythonのdef文は実行するたびに関数オブジェクトを初期化します.この関数オブジェクトは私たちが呼び出す関数で、一般的なオブジェクトと見なすことができますが、このオブジェクトには実行可能な方法と一部の属性があります.
    パラメータに初期値が与えられたパラメータについては、Pythonの関数パラメータがオブジェクトを渡すため、転送アドレスとみなすこともでき、defを最初に初期化すると、この可変オブジェクトのメモリアドレスとして、このデフォルトパラメータitem_Listはこのメモリアドレスにバインドされます.後続の関数呼び出しでは、呼び出し元が新しいデフォルト値を指定すると、元のデフォルト値が上書きされます.呼び出し元が新しいデフォルト値を指定していない場合は、元のデフォルト値が使用されます.
    07.アクセスクラス内のプライベートメソッド
    クラス内で直接呼び出すことができるメソッドは、公有メソッド(protectedタイプのメソッドでもよいが、推奨しない)のみであることはよく知られている.すなわち,クラスのプライベートメソッドは直接呼び出すことができない.
    ここではまず例を見てみましょう
    class Kls():
        def public(self):
            print('Hello public world!')
    
        def __private(self):
            print('Hello private world!')
    
        def call_private(self):
            self.__private()
    
    ins = Kls()
    
    #       ,   
    ins.public()
    
    #         ,  
    ins.__private()
    
    #             ,    
    ins.call_private()

    すべての方法である以上、私たちは本当に直接呼び出す方法がありませんか?
    もちろんありますが、決してそうしないことをお勧めします.ここは普及しているだけです.理解してください.
    #       ,      
    ins._Kls__private()
    ins.call_private()

    08.時にはスライス異常がない場合がある
    my_list = [1, 2, 3, 4, 5]
    print(my_list[5])

    実行すると、私たちが予想したようにインデックス異常が投げ出されます.
    Traceback (most recent call last):
      File "F:/Python Script/test.py", line 2, in 
        print(my_list[5])
    IndexError: list index out of range

    しかし、今日言うのは間違いなくこれではなく、あなたが知らないかもしれない冷たい知識です.
    次のような書き方では、インデックス異常は報告されずmy_が実行されます.List[5:]は、新しいlist:[]を返します.
    my_list = [1, 2, 3]
    print(my_list[5:])

    09.継続文字が不要な場合
    コードを書く際には,コードの可読性のためにコードのレイアウトが特に重要である.
    高可読性のコードを実現するためによく使われるのが続行符\です.
    >>> a = 'talk is cheap,'\
    ...     'show me the code.'
    >>>
    >>> print(a)
    talk is cheap,show me the code.

    では、どのような場合、継続文字を書く必要はありませんか?
    まとめてみると、これらの記号の間のコード改行は、続行記号を省略することができる:[],(),{}
    >>> my_list=[1,2,3,
    ...          4,5,6]
    
    >>> my_tuple=(1,2,3,
    ...           4,5,6)
    
    >>> my_dict={"name": "MING",
    ...          "gender": "male"}

    また、複数行のテキストコメントにおいて'''、継続文字は書かなくてもよい.
    >>> text = '''talk is cheap,
    ...           show me the code'''

    簡単な例をいくつか挙げただけです.
    しかし、あなたは一反三を挙げることを学ばなければなりません.同様に、以下のシーンでも同様に適用されます.
  • クラス、および関数の定義.
  • リスト導出式、辞書導出式、集合導出式、ジェネレータ式
  • 10.Py 2はprint()も使用可能
    Py 3しかprint()を使えないと思っている人も少なくないと思いますが、Py 2はprintしか使えないと思います」.
    Python 2.6までは、サポートのみ
    print "hello"

    Python 2.6と2.7では、次の3つをサポートできます.
    print "hello"
    print("hello")
    print ("hello")

    Python 3.xでは、次の2つをサポートできます.
    print("hello")
    print ("hello")

    元のアドレス:https://www.cnblogs.com/wongbingming/p/9393186.html