Python3の基本的な関数の使い方

WBOY
WBOYオリジナル
2016-06-16 08:42:561103ブラウズ

一般に、関数とは、特定の機能を備えた、整理された再利用可能なコード セグメントです。関数により、アプリケーションのモジュール性とコードの再利用が向上します。Python には print() などの多くの組み込み関数が提供されており、ユーザーは関数をカスタマイズすることもできます。

この記事ではPython3の関数の使い方を例を交えてまとめます。具体的な内容は以下の通りです。

1. 定義

キーワード def を使用して関数を定義し、その後に関数名と括弧 () 内のオプションのパラメーター リストを続けます。関数の内容はコロンで始まり、インデントされます。一般的な形式は次のとおりです:

def 函数名(参数列表): 
  """文档字符串""" 
  函数体 
  return [expression] 
注:

パラメータ リスト、docstring、および return ステートメントはオプションです。

例:

def fib(n): 
  """Print a Fibonacci series""" 
  a, b = 0, 1 
  while b < n: 
    print(b, end=' ') 
    a, b = b, a+b 
  print() 
 
fib(2000) # call 
f = fib  # assignment 
f(2000) 
関数名の値はユーザー定義関数の型です。関数名の値に別の名前を割り当てて、関数としても使用できるようにします。

2. 関数変数のスコープ

関数内で定義された変数にはローカル スコープがあり、関数の外で定義された変数にはグローバル スコープがあります。注: グローバル変数は関数内で参照できますが、(global で宣言されていない限り) 値を割り当てることはできません。

a = 5     # 全局变量a 
 
def func1(): 
  print('func1() print a =', a) 
 
def func2(): 
  a = 21  # 局部变量a 
  print('func2() print a =', a)  
 
def func3(): 
  global a 
  a = 10  # 修改全局变量a 
  print('func3() print a =', a) 
 
func1() 
func2() 
func3() 
print('the global a =', a) 

3. 関数呼び出し

1. 通常の通話

他の言語の関数呼び出しと同様に、Python で関数を呼び出すときは、仮パラメータと同じ数の実パラメータを与え、順番に 1 対 1 に対応させる必要があります。

def fun(name, age, gender): 
  print('Name:',name,'Age:',age,'Gender:',gender,end=' ') 
  print() 
 
fun('Jack', 20, 'man') # call 


2. キーワードパラメータを使用して関数を呼び出します

キーワード=値の形式でキーワードパラメータを介して関数を呼び出すこともできます。対応関係を明確に示しているため、パラメータの順序は重要ではありません。

def fun(name, age, gender): 
  print('Name:',name,'Age:',age,'Gender:',gender,end=' ') 
  print() 
 
fun(gender='man', name='Jack', age=20) # using keyword arguments 

3. デフォルトのパラメーターを使用して関数を呼び出します

Python の関数では 1 つ以上のパラメータのデフォルト値を指定することもできるため、呼び出し時にパラメータを選択的に省略できます。

def fun(a, b, c=5): 
  print(a+b+c) 
 
fun(1,2) 
fun(1,2,3) 

注:

通常、デフォルト値は 1 回だけ計算されますが、デフォルト値がリスト、ディクショナリ、または大規模なクラスのオブジェクトなどの変更可能なオブジェクトである場合は異なります。たとえば、次の関数は後続の呼び出しでパラメータ値 を蓄積します:

def fun(a, L=[]): 
  L.append(a) 
  print(L) 
 
fun(1) # 输出[1] 
fun(2) # 输出[1, 2] 
fun(3) # 输出[1, 2, 3] 

4. 変数パラメータ関数を呼び出します

仮パラメータの前にアスタリスク (*) または 2 つのアスタリスク (**) を付けることで、関数が任意の数の引数を受け取ることができることを指定します。

def fun(*args): 
  print(type(args)) 
  print(args) 
 
fun(1,2,3,4,5,6) 
 
# 输出: 
# <class 'tuple'> 
# (1, 2, 3, 4, 5, 6) 

def fun(**args): 
  print(type(args)) 
  print(args) 
 
fun(a=1,b=2,c=3,d=4,e=5) 
 
# 输出: 
# <class 'dict'> 
# {'d': 4, 'e': 5, 'b': 2, 'c': 3, 'a': 1} 

これは 2 つの例の出力からわかります。パラメーターが *args の形状である場合、関数に渡される実際のパラメーターは位置に従ってタプルにパックされます。 **args の場合、関数に渡された key=value 引数は辞書 (dict) にパックされます。

5. パラメータを展開して関数を呼び出します

前のポイントでは、任意の数の実パラメータを渡すと、それらはタプルまたはディクショナリにパックされると述べました。もちろん、パッケージ化とアンパックが行われます。単一および二重アスタリスクを使用してリスト、タプル、辞書を解凍します:

def fun(a=1, b=2, c=3): 
  print(a+b+c) 
 
fun()  # 正常调用 
list1 = [11, 22, 33] 
dict1 = {'a':40, 'b':50, 'c':60} 
fun(*list1)  # 解包列表 
fun(**dict1) # 解包字典 
 
# 输出: 
# 6 
# 66 
# 150 

注: * はシーケンスの解凍に使用され、** は辞書の解凍に使用されます。ディクショナリを解凍すると一連の key=value が取得されるため、基本的にはキーワード パラメーターを使用して関数を呼び出します。

4. ラムダ式

lambda キーワードを使用すると、小さな匿名関数を作成できます。ラムダ関数は任意の数のパラメータを受け入れることができますが、返すことができるのは式の値のみです。

lambda [arg1 [,arg2,.....argn]] : expression 
ラムダ式は、関数オブジェクトが必要な場所であればどこでも使用でき、構文的に 1 つの式に制限されます。

f = lambda x, y: x+y 
print(f(10, 20)) 

def make_fun(n): 
  return lambda x: x+n 
 
f = make_fun(15) 
print(f(5)) 

5. ドキュメント文字列

関数本体の最初のステートメントは、三重引用符で囲まれた文字列にすることができます。この文字列は関数のドキュメント文字列、つまり docstring です。 print(function.__doc__) を使用してドキュメントを出力できます:

def fun(): 
  """Some information of this function. 
  This is documentation string.""" 
  return 
 
print(fun.__doc__) 

ドキュメント文字列は主に関数に関する情報を記述するために使用され、ユーザーが対話的に参照および出力できるようにします。コードに docstring を追加する良い習慣を身に付けることをお勧めします。

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