Python 30のヒント、ヒント(1)

1.Pythonバージョン

皆さんにお知らせしたいと思います。2020年1月1日以降、PythonはPython2を正式にサポートしなくなりました。この記事の例の多くは、Python3でのみ実行できます。まだPython2.7を使用している場合は、今すぐアップグレードしてください。

2.Pythonの最小バージョンを確認します

コード内のPythonのバージョンをチェックして、ユーザーが互換性のないバージョンでスクリプトを実行していないことを確認できます。チェック方法は以下のとおりです。

if not sys.version_info > (2, 7):
   #. berate your user for running a 10 year
   #. python version
elif not sys.version_info >= (3, 5):
    #. Kindly tell your user (s)he needs to upgrade
   #. because you're using 3.5 features

3. IPython

ここに画像の説明を挿入

IPythonは本質的に拡張シェルです。自動補完のためだけに試してみる価値があります。その機能はそれだけではありません。また、次のような、私が書き留めることができない多くのコマンドがあります。

  • %cd:現在の作業ディレクトリを変更します

  • %edit:エディターを開き、エディターを閉じた後、入力したコードを実行します

  • %env:現在の環境変数を表示します

  • %pip install [pkgs]:インタラクティブシェルを離れることなくソフトウェアパッケージをインストールできます

  • %timeおよび%timeit:Pythonコードを実行する時間を測定します

コマンドの完全なリストについては、ここをクリックして表示してください(https://ipython.readthedocs.io/en/stable/interactive/magics.html)。

非常に便利な機能もあります。前のコマンドの出力を参照してください。InとOutは実際のオブジェクトです。3番目のコマンドの出力はOut [3]の形式で使用できます。

IPythonのインストールコマンドは次のとおりです。

pip3 install ipython
4.リスト内包

リスト内包表記を使用すると、リストを埋めるための面倒なループの使用を回避できます。リスト内包表記の基本的な構文は次のとおりです。

[ expression for item in list if conditional ]

基本的な例を挙げます。リストに注文番号のセットを入力します。

mylist = [i for i in range(10)]
print(mylist)
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

式を使用できるため、いくつかの算術演算も実行できます。

squares = [x**2 for x in range(10)]
print(squares)

# [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

外部関数を呼び出すこともできます。

def some_function(a):
    return (a + 5) / 2

my_formula = [some_function(i) for i in range(10)]
print(my_formula)
# [2, 3, 3, 4, 4, 5, 5, 6, 6, 7]

最後に、「if」を使用してリストをフィルタリングすることもできます。次の例では、2で割り切れる数のみを保持します。

filtered = [i for i in range(20) if i%2==0]
print(filtered)
# [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
5.オブジェクトのメモリ使用量を確認します

sys.getsizeof()を使用して、オブジェクトのメモリ使用量を確認できます。

import sys
mylist = range(0, 10000)
print(sys.getsizeof(mylist))
# 48

待ってください、なぜこの巨大なリストには48バイトしか含まれていないのですか?

ここでの範囲関数はクラスを返しますが、リストのように動作するためです。メモリ使用量に関しては、範囲は実際の数値リストよりもはるかに効率的です。

リスト内包表記を使用して、同じ範囲の数値のリストを作成することができます。

import sys

myreallist = [x for x in range(0, 10000)]
print(sys.getsizeof(myreallist))
# 87632
6.複数の値を返します

Pythonの関数は、辞書、リスト、またはクラスを使用せずに複数の変数を返すことができます。次のように:

def get_user(id):
    # fetch user from database
    # ....
    return name, birthdate

name、birthdate = get_user(4)
戻り値の数が制限されている場合は、もちろん問題ありませんただし、戻り値の数が3を超える場合は、戻り値を(データ)クラスに配置する必要があります。

7.データクラスを使用する

Pythonは、バージョン3.7以降にデータクラスを提供しています。通常のクラスや他のメソッド(複数の値や辞書を返すなど)と比較して、データクラスにはいくつかの明らかな利点があります:

データ型のコードが少ない

データクラスはeqメソッドを提供するため、データクラスを比較できます

データクラスはreprメソッドも提供するため、デバッグ時にデータクラスを簡単に出力できます。

データ型には型のヒントが必要なので、バグの可能性を減らすことができます

データクラスの例は次のとおりです。

from dataclasses import dataclass

@dataclass
class Card:
    rank: str
    suit: str
card = Card("Q", "hearts")
print(card == card)
# True
print(card.rank)
# 'Q'
print(card)
Card(rank='Q', suit='hearts')

詳細な使用ガイドについては、ここをクリックしてください(https://realpython.com/python-data-classes/)。

8.変数を交換します

次のヒントは非常に賢く、複数行のコードを節約できます。

a = 1
b = 2
a, b = b, a
print (a)
# 2
print (b)
# 1
9.辞書のマージ(Python 3.5以降)

Python 3.5以降、辞書をマージする操作が簡単になりました。

dict1 = {
    
     'a': 1, 'b': 2 }
dict2 = {
    
     'b': 3, 'c': 4 }
merged = {
    
    **dict1, **dict2}
print (merged)
# {'a': 1, 'b': 3, 'c': 4}

キーが繰り返されると、最初の辞書のキーが上書きされます。

10.文字列の最初の文字を大文字にします

次のテクニックは本当に少しかわいいです:

mystring = "10 awesome python tricks"
print(mystring.title())
'10 Awesome Python Tricks'

おすすめ

転載: blog.csdn.net/weixin_42464956/article/details/107487455