Python学習ノート――抽象
一、def作成関数
二、キーワードパラメータ
パラメータを渡すときにパラメータを指定し、パラメータを順番に関数に渡すことができ、関数を作成するときにキーワードを使用してパラメータのデフォルト値にすることもできます.
キーワードを使用してデフォルト値を指定します.
三、任意の長さのパラメータ
パラメータの前に「*」を付けると、すべてのパラメータが同じメタグループに配置され、使用されます.パラメータが指定されていない場合、パラメータは空のメタグループです.
**番号収集キーワード
四、反転過程
メタグループまたは辞書をパラメータに分解して関数に渡す
*分解タプル
**グループ辞書
五、作用域
各関数呼び出しには新しい役割ドメインが作成されます.関数内の変数はローカル変数と呼ばれ、関数内部ではglobals()[]でグローバル変数を呼び出し、関数内部ではglobalでグローバル変数を定義できます.
6、再帰
再帰は、自身を引用することです.
関数が直接値を返す場合の基本例
1つまたは複数の問題の最小部分を含む再帰コール
二元検索アルゴリズム:
- #----------------------------------------------------------------------
- def hello(name):
- """test"""
- return 'hello, ' + name + '!'
-
- print hello('wisp')
-
- :
- hello, wisp!
二、キーワードパラメータ
パラメータを渡すときにパラメータを指定し、パラメータを順番に関数に渡すことができ、関数を作成するときにキーワードを使用してパラメータのデフォルト値にすることもできます.
- >>> def hello(greeting,name):
- print '%s,%s!' % (greeting,name)
- >>> hello('hello','wisp')
- hello,wisp!
- >>> hello(greeting='hello',name='wisp')
- hello,wisp!
キーワードを使用してデフォルト値を指定します.
- >>> def hello_new(greeting='hello',name='wisp'):
- print '%s,%s!' % (greeting,name)
-
- >>> hello_new()
- hello,wisp!
三、任意の長さのパラメータ
パラメータの前に「*」を付けると、すべてのパラメータが同じメタグループに配置され、使用されます.パラメータが指定されていない場合、パラメータは空のメタグループです.
- >>> def print_params(*params):
- print params
-
- >>> print_params('Testing')
- ('Testing',)
- >>> print_params(1,2,3)
- (1, 2, 3)
**番号収集キーワード
- >>> def print_params_3(**params):
- print params
- >>> print_params_3(x=1,y=2,z=3)
- {'y': 2, 'x': 1, 'z': 3}
四、反転過程
メタグループまたは辞書をパラメータに分解して関数に渡す
*分解タプル
**グループ辞書
- >>> def add(x,y):
- return x + y
-
- >>> params = (1,2)
- >>> add(*params)
- 3
-
- >>> def hello_new(greeting='hello',name='wisp'):
- print '%s,%s!' % (greeting,name)
- >>> params = {'name':'wisp','greeting':'hello'}
- >>> hello_new(**params)
- hello,wisp!
五、作用域
各関数呼び出しには新しい役割ドメインが作成されます.関数内の変数はローカル変数と呼ばれ、関数内部ではglobals()[]でグローバル変数を呼び出し、関数内部ではglobalでグローバル変数を定義できます.
- >>> x = 1
- >>> def change_global():
- global x
- x = x + 1
-
- >>> change_global()
- >>> x
- 2
6、再帰
再帰は、自身を引用することです.
関数が直接値を返す場合の基本例
1つまたは複数の問題の最小部分を含む再帰コール
- def factorial(n):
- """by wisp"""
- if n == 1:
- return 1
- else:
- return n * factorial(n-1)
-
- print factorial(10)
-
- 3628800
二元検索アルゴリズム:
- def search(sequence, number, lower, upper):
- """by wisp"""
- if lower == upper:
- assert number == sequence[upper]
- return upper
- else:
- middle = (lower + upper) // 2
- if number > sequence[middle]:
- return search(sequence, number, middle+1, upper)
- else:
- return search(sequence, number, lower, middle)
-
-
- print search(range(1,100),37)