Learn Python 3:関数

3696 ワード

一、定義関数
Pythonでは、def文を使用する関数を定義し、関数名、括弧、括弧のパラメータ(パラメータが必要な場合)とコロンを順に書きます.次に、関数体をインデントブロック(4つのスペースをインデント)に記述し、戻り値があればreturn文で返します.プログラムの大部分の煩雑な作業を関数に移して完了し、メインプログラムを簡略化します.
簡単な関数は次のとおりです.
def test(name):
    """     """
    print('hello ' + name)
    return name

三重引用符で囲まれたテキストはドキュメント文字列であり、Pythonはそれらを用いて関数を生成するドキュメントを生成する.
空の関数も定義できます.
def test():
    pass

二、関数のパラメータ
1、位置パラメータ
関数を呼び出す場合、Pythonは、位置パラメータと呼ばれる関数呼び出しの各実パラメータを関数定義の対応するパラメータに関連付けます.
def power(x, y):
    """  x y  """
    return x**y

x、yは位置パラメータであり、power関数を呼び出すときは対応するx、yを入力する必要があります.
>>>power(2, 4)
16

2、デフォルトパラメータ
上のpower関数の場合、ほとんどの場合、平方を計算するだけでデフォルトのパラメータを使用して、power関数を次のように変更できます.
def power(x, y=2):
    return x**y

Power関数が呼び出されると、yパラメータが指定されていない場合、デフォルトでxの平方が計算されます.
>>>power(3)
9
>>>power(3, 3)
27

注意デフォルトパラメータは必須パラメータの後ろに置く必要があります.デフォルトパラメータを使用すると、関数の呼び出しを簡略化できます.
3、キーワードパラメータ
キーワードパラメータを使用すると、任意のkey-valueを入力できます.これらのkey-valueは、関数内で自動的にdictに組み立てられます.
キーワードパラメータを使用する場合は、関数呼び出しの実パラメータの問題を考慮する必要はありません.
def person(first_name, last_name):
    return first_name + ' ' + last_name
>>>person(first_name='zhang', last_name='san')
zhang san
>>>person(last_name='san', first_name='zhang')
zhang san

また、複数のkey-valueを渡すにはどうすればいいですか?
def person(**person_info):
    print(person_info)
#     key-value
>>>person(name='tom', age=10)
{'name': 'tom', 'age': 10}
#   dict
>>>info = {'name': 'tom', 'age': 10}
>>>person(**info)
{'name': 'tom', 'age': 10}

入力したキーワードパラメータの名前には制限はありません.もちろん条件判断を追加することで実現できますが、面倒なことに、名前付きキーワードパラメータはこの問題をよく解決しています.
def person(name, *, age, job):
    print(name, age, job)

パラメータリストのアスタリスクに注意してください.アスタリスクの後のパラメータは名前付きキーワードパラメータです.入力されたキーワードパラメータの名前が含まれていない場合は、エラーが表示されます.
>>>person('tom', age=20, job='it')
tom 20 it
>>>person('tom', age=20, job='it', sex='boy')
Traceback (most recent call last):
  File "", line 1, in 
TypeError: person() got an unexpected keyword argument 'sex'

4、可変パラメータ
名前の通り、入力されたパラメータの個数が可変であることは、キーワードパラメータと類似している.
def get_sum(*numbers):
    return sum(numbers)
#       
>>>get_sum(1, 2, 3, 4)
10
#   list
>>>l = [1, 2, 3, 4]
>>>get_sum(*l)
10
#   tuple
>>>t = (1, 2, 3, 4])
>>>get_sum(*t)
10

三、関数の戻り値
関数は常に出力を直接表示するのではなく、いくつかのデータを処理し、1つまたは複数の値のセットを返すことができます.Pythonの戻り値は特殊で、単一の基本タイプのデータ、リスト、辞書、setを返すほか、複数の値を返すことができます.たとえば、次のようにします.
def test():
    return 1, 2, 3, 4
>>>test()
(1, 2, 3, 4)

Pythonの関数が多値を返すのはtupleを返すことであることがわかります.
三、関数作成の注意事項
  • は、関数に記述名を指定し、小文字と下線のみを使用します.記述的な名前は、コードが何をしたいのかを他の人に理解するのに役立ちます.
  • 各関数には、その機能を簡単に説明する注釈が含まれなければならない.この注釈は、関数定義の直後にあり、ドキュメント文字列フォーマット
  • を採用しなければならない.
  • パラメータにデフォルト値を指定する場合、等号の両側にスペースはありません:
  • def power(x, y=2):
        return x**y
    

    関数呼び出しのキーワードの実パラメータについても、次のような規則に従います.
    >>>power(3, y=4)
    
  • プログラムまたはモジュールが複数の関数を含む場合、2つの空白行を使用して隣接する関数を
  • に分けることができる.