Python の基礎 - 関数の紹介

巴扎黑
巴扎黑オリジナル
2017-07-21 16:45:581917ブラウズ

8. 関数

  1. 関数は、特定の作業を完了するために使用される名前付きのコード ブロックです。 def 関数定義。関数名を示します。関数を定義する際にパラメータの名前と位置を決めて、関数のインターフェース定義が完成します。関数の呼び出し元は、正しいパラメーターの渡し方と関数が返す値を知っていれば十分です。関数内の複雑なロジックはカプセル化されており、呼び出し元は理解する必要はありません。 関数で定義された特定のタスクを実行するには、その関数を呼び出します。プログラム内で同じタスクを複数回実行する場合、タスクを完了するためにコードを繰り返し記述する必要はなく、タスクを実行する関数を呼び出して Python にコードを実行させるだけで済みます。

  2. 高階関数は英語でHigher-order functionといいます

  3. 8.1 実パラメータと仮パラメータ

  4. 仮パラメータ:関数がその作業を完了するために必要な情報。

実パラメータ:関数呼び出し時に関数に渡される情報。

8.2 パラメータの受け渡し

関数定義には複数の仮パラメータが含まれる場合があるため、関数呼び出しにも複数の実パラメータが含まれる場合があります。実パラメータを関数に渡すにはさまざまな方法があります。位置パラメータを使用することもできます。これには、実パラメータの順序が仮パラメータの順序と同じである必要があります。また、各実パラメータの順序を指定してキーワード引数を使用することもできます。変数名と値で構成されます。リストや辞書も使用できます。

8.2.1 位置パラメータ

1. 関数を呼び出すとき、Python は関数呼び出し内の各実パラメータを関数定義内の仮パラメータに関連付ける必要があります。単純な関連付けは、実際のパラメータの順序に基づいています。この関連付けは位置引数と呼ばれます。 2. 関数では、必要に応じて任意の数の位置引数を使用でき、Python は関数呼び出し内の実際のパラメーターを関数定義内の対応する仮パラメーターに順番に関連付けます。

3. 位置引数を使用して関数を呼び出す場合、引数の順序が正しくない場合、出力は正しくなりません。

8.2.2 キーワード引数とキーワードパラメータ

キーワード引数は、関数に渡される(名前と値)のペアです。名前と値を引数に直接関連付けるので、引数を関数に渡すときに混乱することはありません。キーワード引数を使用すると、関数呼び出し内の引数の順序を気にする必要がなくなり、関数呼び出し内の各値の目的が明確に示されます。

describe_pet(

animal_type='hamster', pet_name='harry') キーワードパラメータはいくつでも渡すことができます:

>>> ; > person('ボブ', 35, city='北京')

名前: ボブ年齢: 35 その他: {'city': '北京'}>>> person('アダム', 45 、性別='M'、仕事='エンジニア') 関数を記述するとき、各仮パラメータのデフォルト値を指定できます。呼び出し関数の仮パラメータに実パラメータが指定されている場合、Python は指定された実パラメータ値を使用します。それ以外の場合は、仮パラメータのデフォルト値が使用されます。したがって、仮パラメータにデフォルト値を割り当てた後、関数呼び出しでは対応する実パラメータを省略できます。デフォルト値を使用すると、関数呼び出しが簡素化され、関数の一般的な使用法が明確に示されます。最大のメリットは、関数呼び出しの難しさを軽減できることです。

名前: アダム年齢: 45 その他: {'性別': 'M', '職業': 'エンジニア'}

8.2.3 デフォルトvalue

デフォルトパラメータは不変オブジェクトを指さなければなりません!

def add_end(L=None):

L が None の場合: L = []リストまたはタプルパラメーターの定義と比較して、変数パラメーターを定義する場合は、パラメーターの前に * 記号を追加するだけです。関数内ではパラメータ番号がタプルを受け取るため、関数コードは完全に変更されません。ただし、この関数を呼び出すときは、0 個のパラメーターを含め、任意の数のパラメーターを渡すことができます。

L.append('END')

return L

8.2。 4 変数パラメーター

def calc(*numbers):

sum = 0 for n in数値:

sum = sum + n * n

return sum

>>> calc (1, 2)

5> または、タプルの要素が変数パラメーターになり、次のように渡されます。 、 3]

>>> 計算(*数値)

14

*nums は、nums リストのすべての要素を変数パラメーターとして渡すことを意味します。

8.2.5 名前付きキーワードパラメータ

キーワードパラメータの場合、関数の呼び出し元は無制限のキーワードパラメータを渡すことができます。何を渡すかというと、関数内でkw checkを渡す必要があります。

キーワードパラメータの名前を制限したい場合は、例えば、キーワードパラメータとしてcityとjobだけを受け取ることができます。このように定義された関数は次のとおりです:

def person(name, age, *, city, job):

print(name, age, city, job)

とキーワードパラメータ **kw とは異なり、名前付きキーワード パラメータには特別な区切り文字 * が必要で、* に続くパラメータは名前付きキーワード パラメータとみなされます。

関数定義に変数パラメーターがすでに存在する場合、次の名前付きキーワード パラメーターには特別な区切り文字 * が必要なくなります:

def person(name, age, *args, city, job):

print(name, age, args, city, job)

名前付きキーワードパラメータは、位置パラメータとは異なるパラメータ名を渡す必要があります。パラメーター名が渡されない場合、呼び出しはエラーを報告します:

>>> person('Jack', 24, 'Beijing', 'Engineer')

Traceback (最新の呼び出し) last):

File "", line 1, in

TypeError: person() は 2 つの位置引数を受け取りますが、4 つが与えられました

パラメーター名 city が不足しているためおよび呼び出し時のジョブ、Python の説明 実装者はこれら 4 つのパラメーターを位置パラメーターとして扱いますが、person() 関数は 2 つの位置パラメーターのみを受け入れます。

名前付きキーワードパラメータにはデフォルト値(デフォルト値)を設定できるため、呼び出しが簡素化されます:

def person(name, age, *, city='Beijing', job):

print(name, age, city, job)

名前付きキーワードパラメータ city にはデフォルト値があるため、呼び出し時に city パラメータを渡す必要はありません:

>>> 'Jack', 24 , job='Engineer')

Jack 24 北京エンジニア

名前付きキーワードパラメータを定義するときは、変数パラメータがない場合は区切り文字 * を書くことを忘れないでください。それ以外の場合は、定義が位置パラメータになります。

8.2.5 同等の関数呼び出し

出力結果は同じですが、呼び出し方法が異なります。

注: 関数呼び出しで必要な出力が生成される限り、どの呼び出し方法を使用しても問題ありません。最も理解しやすい呼び出し方法を使用してください。

8.2.6 空の関数 (パス)

何もしない空の関数を定義したい場合は、 pass ステートメントを使用できます:

def nop():

pass

pass ステートメントは何も行いません。たとえば、関数コードの書き方がまだわかっていない場合は、コードを実行できるようにパスを最初に置くことができます。

8.2.7 実パラメータのエラーを避ける

実パラメータが指定されていない、実パラメータの順序が間違っている、実パラメータの形式(引用符など)が考慮されていない。

8.2.8 global ステートメント (グローバル変数)

関数内でグローバル変数に格納されている値を変更したい場合は、変数に対して global ステートメントを使用する必要があります。

8.3 戻り値

関数は常に出力を直接表示するとは限りません。代わりに、一部のデータを処理して 1 つまたは一連の値を返すことができます。関数から返される値を戻り値といいます。関数の戻り値は、return ステートメントを使用して返されます。

関数内では、return ステートメントを使用して、関数を呼び出したコード行に値を返すことができます。戻り値を使用すると、プログラムの重労働のほとんどを関数に移すことで、メイン プログラムを簡素化できます。

8.3.1 複数の値を返す

import math ステートメントは math パッケージをインポートすることを意味し、後続のコードが math パッケージ内の sin、cos、およびその他の関数を参照できるようにします。複数の値を返すことができます。

>>>これは単なる幻想ですmove(100, 100, 60, math.pi / 6)

>>> print(r)

(151.96152422706632, 70.0)

戻り値はタプルです!ただし、構文的にはタプルを返すときに括弧を省略でき、複数の変数が同時にタプルを受け取り、位置に応じて対応する値を割り当てることができるため、複数の値を返す Python の関数は実際にはタプルを返します。しかし、 と書く方が便利です。

8.3.2 実パラメータをオプションにする

if ステートメントを使用して、この実パラメータが必要かどうかを判断します。

8.3.3 Return Dictionary

この関数は、リストや辞書などのより複雑なデータ構造を含む、あらゆる種類の値を返すことができます。

8.3.4 関数を返す

関数をパラメータとして受け入れることに加えて、高階関数は結果値として関数を返すこともできます。すぐに合計する必要がない場合は、合計結果を返すことはできませんが、合計関数を返します:

def Lazy_sum(*args):

def sum():

ax = 0

引数の n の場合:

AX = AX + N

Return ax

Return Sum

Lazy_sum () を呼び出すと、戻り値は平和の結果ではなく調和関数です:

の結果は次のようになります。関数 f が呼び出されたときに実際に計算されます:
>>> f = Lazy_sum(1, 3, 5, 7, 9)

>><関数 Lazy_sum

>>> を呼び出すと、同じパラメータが渡された場合でも、各呼び出しは新しい関数を返します: >>> f2 = Lazy_sum (1, 3, 5, 7, 9) >お互いに影響を与えません。合8.3.5 関数と While

> >> f1 = Lazy_sum(1, 3, 5, 7, 9)

def の使用を結合する Get_Formatted_name (first_name, last_name): "" "" "" "" "" " if l_name == 'q':

full_name = first_name + '' + Last_name

return full_name.title()

True の場合:タイトル。 : ")

if f_name == 'q': ブレーク l_name = input("姓: ")

formatted_name = get_formatted_name(f_name, l_name )

print("nHello, " + formatted_name + "!")

8.3.6 クロージャ9
クロージャを返すときに留意すべき点の 1 つは、 return 関数はループ変数を参照しないでください。参照しないと、後で変数を変更するときに参照されます。ループ変数を参照する必要がある場合、別の関数を作成し、その関数のパラメーターを使用してループ変数の現在の値をバインドする方法がとられます。ループ変数がその後どのように変化しても、関数のパラメーターにバインドされた値は変わりません。欠点はコードが長いことですが、ラムダ関数を使用してコードを短縮できます。

def count():

def f(j):

def g():

return j*j

fs = []

for i in range(1 , 4):

fs.append(f(i)) # f(i) が即時に実行されるので、i の現在の値が f() に渡されます

return fs

>>> f1, f2 , f3 = count()

>>> f1()

1

>>> f2()

>>> f3()

8.3.7 匿名関数 lambda

関数を渡すとき、関数を明示的に定義する必要がない場合があります。匿名関数を直接渡す方が便利です。

Pythonでは、匿名関数のサポートは限られています。引き続きmap()関数を例に挙げると、f(x)=x2を計算するとき、f(x)の関数を定義することに加えて、匿名関数を直接渡すこともできます。 >> リスト (マップ(ラムダ x: x * x, [1, 2, 3, 4, 5, 6, 7, 8, 9]))

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

比較すると、無名関数 lambda x: x * x が実際には:

def f(x):

return x * であることがわかります。 x 匿名関数を使用することには、関数に名前がないため、関数名の競合を心配する必要がないという利点があります。さらに、匿名関数を関数オブジェクトとして使用することもできます。

キーワード lambda は匿名関数を表し、コロンの前の x は関数パラメーターを表します。匿名関数には制限があり、式は 1 つしか持てません。戻り値は式の結果になります。

>>> f = lambda x: x * x

>>> f at 0x101c6ef28>

>>> f(5)

8.4 リストを渡す

名前の中の名前: このリストには、名前、数値、またはより複雑なオブジェクト (辞書など) が含まれる場合があります。リストが関数に渡されると、関数はその内容に直接アクセスできるようになります。リスト処理の効率を向上させるには、以下の関数を使用します。

8.4.1 関数内のリストを変更する

1. 関数にリストを渡した後、関数はリストを変更できます。関数内でこのリストに加えられた変更は永続的なものとなるため、大量のデータを効率的に処理できます。

2. append Popを追加または削除します

3. 関数はタスクを完了し、関数は相互に呼び出すことができます。機能を最適化して保守や変更を容易にします。

8.4.2 関数の変更は禁止されています

この問題を解決するには、この方法で元のリストの代わりにリストのコピーを関数に渡すことができます。関数による変更はコピーにのみ影響し、影響は与えられません。全然オリジナル。

function_name(list_name[:]), [:]はコピーと同等です。

8.5 任意の数の実パラメータ (変数パラメータ) を渡す

幸いなことに、Python では関数が呼び出しステートメントから任意の数の実パラメータを収集することができます。 。

def make_pizza(*toppings):

パラメータ名 *toppings のアスタリスクは、toppings という名前の空のタプルを作成し、受け取ったすべての値をこのタプルにカプセル化するように Python に指示します。関数本体内の print ステートメントは、Python が 1 つの値を使用した関数の呼び出しと 3 つの値を使用した関数の呼び出しを処理できることを示す出力を生成します。関数が単一の値しか受け取らない場合でも、Python は引数をタプルにカプセル化することに注意してください。

8.5.1 位置引数と可変引数の組み合わせ

関数にさまざまな型の引数を受け入れさせたい場合は、任意の数の引数を受け入れる仮パラメータを関数定義の最後に置く必要があります。 Python は、最初に位置引数とキーワード引数を照合し、次に残りの引数を最後の仮パラメータに収集します。

8.5.2 変数引数とキーワード引数を使用する

def build_profile(first, last, **user_info):

関数 build_profile() の定義には姓名が必要で、ユーザーはいくつでも指定できます。必要な名前と値のペア。仮パラメータ **user_info の 2 つのアスタリスクは、user_info という名前の空の辞書を作成し、受け取ったすべての名前と値のペアをこの辞書にカプセル化するように Python に指示します。この関数では、user_info 内の名前と値のペアに他の辞書と同様にアクセスできます。

for key, value in user_info.items():

profile[key] = value

user_profile = build_profile('albert', 'einstein', location='princeton', field='physics')

8.5 .3 パラメータの組み合わせを使う

1. Pythonで関数を定義する際には、必須パラメータ、デフォルトパラメータ、変数パラメータ、キーワードパラメータ、名前付きキーワードパラメータの5つのパラメータを組み合わせて使用​​することができます。ただし、パラメーター定義の順序は、必須パラメーター、デフォルト パラメーター、変数パラメーター、名前付きキーワード パラメーター、およびキーワード パラメーターである必要があることに注意してください。

2. Pythonの関数は非常に柔軟なパラメータ形式を持っており、単純な呼び出しを実装できるだけでなく、非常に複雑なパラメータを渡すこともできます。

3. デフォルトパラメータは不変オブジェクトを使用する必要があります。変数オブジェクトの場合、プログラムの実行時にロジックエラーが発生します。

4. 変数パラメータとキーワードパラメータを定義するための構文に注意してください:

5.*args は変数パラメータ、args はタプルを受け取ります

6.**kw はキーワードパラメータ、kw は a を受け取ります。辞書。

7. そして、関数を呼び出すときに変数パラメータとキーワードパラメータを渡す方法の構文:

変数パラメータは直接渡すことができます: func(1, 2, 3)、または最初にリストまたはタプルを組み立てることもできます、そして*argsを介して渡します: func(*(1, 2, 3));

キーワードパラメータはfunc(a=1, b=2)のように直接渡すことも、最初にdictをアセンブルすることもできます。次に pass ** kw が func(**{'a': 1, 'b': 2}) に渡されます。

*args と **kw の使用は Python のイディオムです。 もちろん、他のパラメータ名も使用できますが、イディオムを使用するのが最善です。

8.5.4 再帰パラメータ

関数内で、他の関数を呼び出すことができます。関数が 内で自分自身 を呼び出す場合、その関数は再帰的です。再帰関数の利点は、定義が簡単でロジックが明確であることです。理論的には、すべての再帰関数をループ内に記述することができますが、ループのロジックは再帰ほど明確ではありません。

def fat(n):

if n==1:

return 1

return n * fat(n - 1)

再帰関数を使用する場合はスタックオーバーフローに注意する必要があります。コンピュータでは、関数呼び出しはスタックのデータ構造を通じて実装され、関数呼び出しが開始されるたびにスタック フレームがスタックに追加され、関数が返されるたびにスタック フレームがスタックから減算されます。スタックのサイズは無限ではないため、再帰呼び出しが多すぎるとスタック オーバーフローが発生します。

ハノイの塔の動きは、再帰関数を使用して非常に簡単に実装できます。

8.6 高階関数

8.6.1 高階関数

変数が関数を指し、関数の引数が変数を受け取ることができるため、関数は別の関数を引数として受け取ることができます。このような関数を呼び出します。高次関数。

def add(x, y, f):

return f(x) + f(y)

8.6.2 組み込み関数

1. 絶対関数を見つけるvalue 関数 abs() にはパラメータが 1 つだけあります。

2. オブジェクトのタイプを決定するには、type() 関数を使用します:

>>> type(123) 3.平方根を計算します。 math.sqrt() 関数を呼び出します。

>>> ; type( 'str')

>>> type(None)

4. lower()は小文字の文字列を返します。

5.__len__メソッドは長さを返します。 Python では、len() 関数を呼び出してオブジェクトの長さを取得しようとすると、実際には len() 関数内でオブジェクトの __len__() メソッドが自動的に呼び出されるため、次のコードは同等です。 &gt;&gt;&gt; () は任意の数のパラメータを受け取ることができ、最大のパラメータを返します。

7. オブジェクトのすべての属性とメソッドを取得したい場合は、文字列を含むリストを返す dir() 関数を使用できます。たとえば、str オブジェクトのすべての属性とメソッドを取得します。

8. Python 組み込み hex() 関数は、整数を 16 進数の文字列に変換します。 9. クラスの継承関係の場合、type()を使うのは非常に不便です。クラスのタイプを決定するには、isinstance() 関数を使用できます。パラメータのタイプがチェックされ、整数および浮動小数点タイプのパラメータのみが許可されます。データ型チェックは、組み込み関数 isinstance() を使用して実装できます。組み込みの isinstance 関数を使用して、変数が文字列であるかどうかを判断します。 >>> obj.x
10. getattr()、setattr()、hasattr()を使うと、オブジェクトの状態を直接操作できます。

>>> hasattr(obj, 'x') # 属性 'x' はありますか?

True
9

>>> hasattr(obj, 'y') # 属性 'y' はありますか?

False

>>> setattr(obj, 'y', 19) # 属性 'y' を設定します

>>> hasattr(obj, 'y') # 属性 'y' を持ちます?

True>>> getattr(obj, 'y') # 属性 'y' を取得します reduceの使い方。 reduce は関数をシーケンス [x1, x2, x3, ...] に適用します。この関数は 2 つのパラメーターを受け取り、結果を継続し、シーケンスの次の要素で累積計算を実行します。
>>> obj.y # 属性 'y' を取得します

一連の組み込み関数を通じて、任意の Python オブジェクトを分析し、その内部データを取得できます。オブジェクト情報が分からない場合にのみオブジェクト情報を取得することに注意してください。

11.Pythonにはmap()関数とreduce()関数が組み込まれています。 map は、渡された関数をシーケンスの各要素に順番に適用し、結果を新しいイテレータとして返します。

>>> def f(x):

...Return x * x

...

>>> 、3、4、5、6、7、8、9])

>>>リスト(r)

[1、4、9、16、25、36、49、64、81]

>>> functools import reduce>>> def fn(x, y):
... Return x * 10 + y

>>>reduce(fn, [1, 3, 5, 7, 9])

13579

12.Pythonの組み込みfilter()関数はシーケンスをフィルタリングするために使用されます。 filter() は 関数とシーケンス も受け取ります。 map() とは異なり、filter() は渡された関数を各要素に順番に適用し、戻り値が True か False かに基づいて要素を保持するか破棄するかを決定します。重要なのは、「フィルター」機能を正しく実装することです。 filter() 関数は遅延シーケンスである Iterator を返すため、filter() に計算結果を強制的に完了させるには、list() 関数を使用してすべての結果を取得し、リストを返す必要があることに注意してください。

def is_odd(n):

Return n % 2 == 1

list(filter(is_odd, [1, 2, 4, 5, 6, 9, 10, 15]))

# Result: [1, 5, 9, 15]

13. Pythonの組み込みsorted()関数はリストを並べ替えることができます。

>>>sorted(['bob', 'about', 'Zoo', 'Credit'], key=str. lower, reverse=True)

> .sorted() 関数は、絶対値による並べ替えなどのカスタマイズされた並べ替えを実装するためのキー関数も受け取ることができます。逆ソートを実行するには、キー関数を変更する必要はありません。3 番目のパラメーター reverse=True を渡すことができます。

['Zoo', ' Credit', 'bob', 'about']

コードの実行中に動的に機能を追加する方法を「Decorator」と呼びます。基本的に、デコレータは関数を返す高階関数です。デコレータ: 関数自体を変更せずに新しい機能を追加します。
15. Python の組み込み列挙関数は、リストをインデックスと要素のペアに変換できるため、インデックスと要素自体を同時に反復できます。 for ループ内の時間。

16.round()関数は小数点以下の任意の桁を返すことができます。

8.6.3 Decorator
関数オブジェクトには __name__ 属性があり、関数の名前を取得できます:

>>> def now():

... print('2015-3-25' )

...>>> f = now
>>> f()

2015-3-25

>>> 今。 '

>> でない場合は isinstance(value, int) :

._score = 値

@property はクラス定義で広く使用されており、呼び出し元がパラメーターで必要なチェックを確保しながら短いコードを作成できるため、プログラム実行時にエラーが発生する可能性が低くなります。

@unique デコレータは、重複した値がないことを確認するのに役立ちます。

8.7 関数をモジュールに保存する

保守しやすいコードを記述するために、多くの関数を異なるファイルにグループ化し、各ファイルに含まれるコードが比較的少なくなるようにすることができます。 Python では、.py ファイルをモジュール (Module) と呼びます。

関数の利点の 1 つは、コードのブロックをメイン プログラムから分離できることです。関数にわかりやすい名前を付けると、メイン プログラムがはるかに理解しやすくなります。さらに一歩進んで、モジュールと呼ばれる別個のファイルに関数を保存し、そのモジュールをメイン プログラムにインポートすることができます。 import ステートメントを使用すると、モジュール内のコードを現在実行中のプログラム ファイルで使用できるようになります。

関数を別のファイルに保存することで、プログラム コードの詳細を隠し、プログラムの高レベルのロジックに集中することができます。これにより、さまざまなプログラムで関数を再利用することもできます。関数を別のファイルに保存すると、プログラム全体ではなく、他のプログラマーとそれらのファイルを共有できます。関数をインポートする方法を知っていれば、他のプログラマが作成した関数ライブラリを使用することもできます。

モジュール名の競合を避けるために、Pythonではパッケージと呼ばれるディレクトリごとにモジュールを整理する方法が導入されました。パッケージが導入された後は、最上位のパッケージ名が他のモジュールと競合しない限り、すべてのモジュールが他のモジュールと競合することはありません。ここで、abc.py のモジュール名は mycompany.abc になり、同様に、xyz.py のモジュール名は mycompany.xyz になります。

各パッケージ ディレクトリに __init__.py ファイルが存在する必要があることに注意してください。それ以外の場合、Python はこのディレクトリをパッケージではなく通常のディレクトリとして扱います。 __init__.py 自体はモジュールであり、そのモジュール名は mycompany であるため、__init__.py は空のファイルにすることも、Python コードを含めることもできます。

8.7.1 モジュール全体をインポートする

関数をインポート可能にするには、まずモジュールを作成する必要があります。モジュールは、プログラムにインポートするコードを含む .py 拡張子を持つファイルです。

if __name__=='__main__':

Test()

モジュールを使用する最初のステップは、コマンドラインで hello モジュール ファイルを実行することです。 Python インタープリター 特別な変数 __name__ が __main__ に設定されており、hello モジュールが他の場所にインポートされている場合、if 判定は失敗します。そのため、この if テストにより、コマンド ラインを介して実行するときにモジュールが追加のコードを実行できるようになります。ポイントはテストを実行することです。

8.7.2 スコープ

モジュールでは多くの関数や変数を定義することがありますが、他の関数や変数でも使用したい関数や変数もあれば、モジュール内でのみ使用したい関数や変数もあります。 Python では、これは _ プレフィックスによって実現されます。通常の関数名と変数名はパブリックであり、abc、x123、PI などのように直接参照できます。__xxx__ のような変数は特殊な変数であり、直接参照できますが、上記の __author__ や __name__ のように特別な目的があります。特殊変数 hello モジュールによって定義されたドキュメント コメントには、特殊変数 __doc__ を使用してアクセスすることもできます。通常、_xxx や __xxx などの変数にはこの変数名を使用しないでください。 _abc、__abc などのように、直接引用しないでください。

プライベート関数や変数は他の人によって引用されるべきではありません。その用途は何ですか?例を参照してください:

モジュール内でgreeting()関数を公開し、プライベート関数で内部ロジックを非表示にすると、greeting()関数を呼び出す際に内部のプライベート関数の詳細を気にする必要がなくなります。これは、コードのカプセル化と抽象化の非常に便利な方法でもあります。つまり、外部から参照する必要のないすべての関数はプライベートとして定義され、外部から参照する必要がある関数のみがパブリックとして定義されます。

8.7.3 特定のモジュールをインポートする

複数の関数をモジュールに格納し、カンマで区切って、モジュールから任意の数の関数をインポートします。

8.7.4 関数のエイリアスを指定するにはasを使用します

fromピザインポートmake_pizza as mp

インポートされる関数の名前がプログラム内の既存の名前と競合する可能性がある場合、または関数の名前が長すぎる場合は、短くて一意のエイリアスを指定できます。 エイリアス - ニックネームに似た、関数の別の名前。この特別なニックネームを関数に割り当てるには、関数をインポートするときに行う必要があります。

8.7.5 モジュールのエイリアスを指定するにはasを使用します

モジュールのエイリアスを指定することもできます。モジュールに短いエイリアスを付けると (エイリアス p をピザ モジュールに割り当てるなど)、モジュール内の関数をより簡単に呼び出すことができます。 Pizza.make_pizza() と比較すると、p.make_pizza() はより簡潔です。

8.7.6 * を使用してモジュール内のすべての関数をインポートします

アスタリスク (*) 演算子を使用すると、Python でモジュール内のすべての関数をインポートできます。

ただし、自分で作成したものではない大きなモジュールを使用する場合は、このインポート方法を使用しないことをお勧めします。プロジェクトで使用されているものと同じ名前の関数がモジュール内にある場合、予期しない結果が生じる可能性があります。 Python では、同じ名前の関数または変数が複数存在するため、すべての関数を個別にインポートするのではなく、関数をオーバーライドする場合があります。

8.8 関数記述ガイド

関数を記述するときは、いくつかの詳細に留意する必要があります。

1. 関数にはわかりやすい名前を付け、小文字とアンダースコアのみを使用する必要があります。わかりやすい名前は、コードが何をしようとしているのかをあなたや他の人が理解するのに役立ちます。モジュールに名前を付けるときも、上記の規則に従う必要があります。

2. 各関数には、その関数を簡単に説明するコメント が含まれている必要があります。このコメントは、関数の定義に従い、docstring 形式 を使用する必要があります。十分に文書化された関数を使用すると、他のプログラマは docstring の説明を読むだけでその関数を使用できます。関数の名前、必要な引数、および関数の型を知っている限り、コードが記述どおりに機能することを信頼できます。戻り値を独自のプログラムで使用できます。

3.仮パラメータのデフォルト値を指定する場合、等号の両側にスペースを入れてはなりません。

def _private_1(name):

return 'Hello, %s' % name

def _private_2(name):

return 'Hi, %s' % name

TDef 挨拶 (名前):

if len (名前) & gt; 3:

Return_private_1 (名前)

else:

Return_Private_2 (名前)

以上がPython の基礎 - 関数の紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。