Pythonノート(4)

4102 ワード

関数#カンスウ#
一.関数の概要
関数はプログラムの重要な構成部分です.これらは、文に名前を付けることができます.その後、プログラムのどこでもこの名前を使用して、この文ブロックを任意に複数回実行することができます.
Pythonでは、
関数はdefキーワードで定義されます.defキーワードの後に関数のラベル名が付いて、カッコのペアが付いています.カッコには、コロンで終わる変数名を含めることができます.次は関数体である文です.次の例では、これは実際に非常に簡単であることを示します.
#!/usr/bin/python # Filename: function1.py def sayHello(): print 'Hello World!' # block belonging to the function sayHello() # call the function
 
 
二.パラメータ
関数の使用中に、パラメータと実パラメータの価値伝達によって完了します.
例:
#!/usr/bin/python # Filename: func_param.py def printMax(a, b): if a > b: print a, 'is maximum' else: print b, 'is maximum' printMax(3, 4) # directly give literal values x = 5 y = 7 printMax(x, y) # give variables as arguments
 
出力:
 
$ python func_param.py 4 is maximum 7 is maximum
 
 
三.ローカル変数
関数定義内で変数を宣言すると、関数外で同じ名前を持つ他の変数とは何の関係もありません.すなわち、変数名は関数にとってローカルです.これを変数の役割ドメインと呼びます.すべての変数の役割ドメインは、名前が定義されている点から定義されたブロックです.
#!/usr/bin/python # Filename: func_local.py def func(x): print 'x is', x x = 2 print 'Changed local x to', x x = 50 func(x) print 'x is still', x
 
出力:
$ python func_local.py x is 50 Changed local x to 2 x is still 50
 
global文について
関数外に定義された変数に値を割り当てる場合は、Pythonという変数名はローカルではなくグローバルであることを伝えなければなりません.
関数の外に定義された変数の値を使用することができます(関数内に同じ名前の変数がないと仮定します).しかし、このように使用すると、コードの可読性に不利である.
#!/usr/bin/python # Filename: func_global.py def func(): global x print 'x is', x x = 2 print 'Changed local x to', x x = 50 func() print 'Value of x is', x
 
出力:
 
$ python func_global.py x is 50 Changed global x to 2 Value of x is 2
 
注:同じglobal文を使用して、複数のグローバル変数を指定できます.例えばglobal x, y, z.
四.既定のパラメータ値
いくつかの関数では、ユーザーがこれらのパラメータに値を指定したくない場合は、デフォルト値を使用するパラメータがオプションであることを望んでいます.この機能は、デフォルトのパラメータ値で完了します.関数定義のパラメータ名に代入演算子(=)とデフォルト値を付けることで、パラメータにデフォルトパラメータ値を指定できます.
例:
#!/usr/bin/python # Filename: func_default.py def say(message, times = 1): print message * times say('Hello') say('World', 5)
 
出力:
 
$ python func_default.py Hello WorldWorldWorldWorldWorld
 
注:パラメータテーブルの末尾にあるパラメータにのみデフォルトのパラメータ値があります.つまり、関数パラメータを宣言するときに、デフォルト値のあるパラメータを宣言してから、デフォルト値のないパラメータを宣言することはできません.これは,パラメータに付与される値が位置に応じて付与されるためである.例えば、def func(a, b=5)は有効であるが、def func(a=5, b)は無効である.
 
五.キーパラメータ
関数に多くのパラメータがあり、一部だけを指定したい場合は、名前を付けてこれらのパラメータに値を割り当てることができます.これはキーパラメータと呼ばれ、位置(以前から使用していた方法)ではなく名前(キーワード)を使用して関数に実パラメータを指定します.
パラメータの順序を心配する必要がないため,関数の使用がより簡単になるという2つの利点がある.二、他のパラメータにデフォルト値があると仮定し、私たちが望むパラメータにのみ値を割り当てることができます.
例:
#!/usr/bin/python # Filename: func_key.py def func(a, b=5, c=10): print 'a is', a, 'and b is', b, 'and c is', c func(3, 7) func(25, c=24) func(c=50, a=100)
 
出力:
 
$ python func_key.py a is 3 and b is 7 and c is 10 a is 25 and b is 5 and c is 24 a is 100 and b is 5 and c is 50
 
 
六.return文
#!/usr/bin/python # Filename: func_return.py def maximum(x, y): if x > y: return x else: return y print maximum(2, 3)
 
出力:
 
$ python func_return.py 3
 
七.ドキュメント文字列について
Pythonには、ドキュメント文字列と呼ばれ、docstringsと略称される奇妙な特性があります.DocStringsは重要なツールです.プログラムドキュメントをより簡単に理解できるようにするため、できるだけ使うべきです.プログラムが実行されると、関数からドキュメント文字列を復元することもできます.
#!/usr/bin/python # Filename: func_doc.py def printMax(x, y): '''Prints the maximum of two numbers. The two values must be integers.''' x = int(x) # convert to integers, if possible y = int(y) if x > y: print x, 'is maximum' else: print y, 'is maximum' printMax(3, 5) print printMax.__doc__
 
出力:
 
$ python func_doc.py 5 is maximum Prints the maximum of two numbers. The two values must be integers.
 
関数の最初の論理行の文字列は、この関数のドキュメント文字列です.DocStringsはモジュールやクラスにも適用されます.
 
ドキュメント文字列の慣例は、最初の行が大文字で始まり、ピリオドが終わる複数の行文字列です.2行目は空行で、3行目から詳細な説明です.ドキュメント文字列を使用する場合は、この慣例に従います.