組織機能が良い、再利用可能であり、コードセグメントは、単一の、または関連する機能を実装するために使用されます。
パイソン)は、印刷のような多くの組み込み関数を、(提供します。しかし、あなたはまた、ユーザー定義関数と呼ばれ、独自の関数を作成することができます。
関数の定義
あなたは、次の簡単なルール、独自の関数で関数を定義することもできます。
- 機能ブロックで DEF 名と機能識別子括弧が続く、キーワード開始() 。
- すべての受信パラメータと引数は括弧の中央に配置する必要があります。括弧の間でパラメータを定義するために使用することができます。
- 機能最初の行のステートメントは、次に選択するために使用することができる機能命令を格納する-文字列を文書化します。
- 関数内のコンテンツ大腸開始、およびインデント。
- リターン[式] エンド機能は、選択的に呼び出し元に値を返します。リターンなしと同等の表現せずに戻ります。
文法
def functionname( parameters ):
"函数_文档字符串"
function_suite
return [expression]
例
以下は、文字列パラメータがそれを通過し、その後、標準の表示装置に印刷するように、パイソンの単純な関数です。
例(Pythonの2.0+)
def printme( str ):
"打印传入的字符串到标准显示设备上"
print str
return
関数呼出し
のみ与えられた名前の関数としての機能を定義するには、パラメータを指定すると、ブロックは、構造の機能が含まれています。
この機能の基本的な構造が完了した後、あなたは別によって実行される機能を呼び出すことができ、Pythonのプロンプトから直接実行することができます。
次の例プリントミーの()関数の呼び出し:
例(Pythonの2.0+)
#!/usr/bin/python
# -*- coding: UTF-8 -*-
# 定义函数
def printme( str ):
"打印任何传入的字符串"
print str
return
# 调用函数
printme("我要调用用户自定义函数!")
printme("再次调用同一函数")
上記の出力の例:
私は、ユーザー定義関数を呼び出すようにしたい! ここでも同じ機能を呼び出します
パラメータの受け渡し
Pythonでは、オブジェクトタイプに属し、変数の型ではありません。
= [1,2,3] A = "Runoob"
上記、[1,2,3] タイプのリスト、「Runoob」は String型である、変数の型ではない、彼女はわずかである物体(ポインター)を参照することができるリストタイプのオブジェクトにも向けることができます文字列型オブジェクト。
あなたは(変更可能)を変更することができますし、(不変)のオブジェクトを変更することはできません
Pythonでは、文字列、タプル、および数字は不変オブジェクトであり、そして、リスト、辞書やので、オブジェクトを変更することができます。
-
不変タイプ:変数の割り当て 、A = 5 、次に割り当て A = 10 intは実際に代わりの値を変化させる、新たに等価であり、ポイントは、それが廃棄させて、図5に示すように、新たな値オブジェクト10が生成され、 。
-
変数型:変数の割り当て ラ= [1,2,3,4]は 、割り当てられた ラ[2] = 5 第三の要素の値の変化がリストLA、それ自体でLAは、その内部の値の一部のみを移動しなかったが吸い込まこれは修正されます。
Pythonのパラメータ転送機能:
-
不変タイプ:類似度値通過C ++のような整数、文字列、タプル(ハードタイプ)。楽しい(a)は、送信のみの値は、対象自体には影響を与えません。そのような改変(a)の楽しみの内部値が、他にコピーされたオブジェクトを変更し、それ自体には影響を与えません。
-
変数型:同様C ++そのような辞書(のリストとして、参照を渡す変数の型)。、である(ラ)の楽しみとして、過去の真のラパス、ラ・外改訂の楽しみにも影響を与えることが
Pythonの質量不変オブジェクト・インスタンス
例(Pythonの2.0+)
#!/usr/bin/python
# -*- coding: UTF-8 -*-
def ChangeInt( a ):
a = 10
b = 2
ChangeInt(b)
print b # 结果是 2
インスタンスChangeInt関数に渡されたときに、INTは、新しい、同じintオブジェクト、= 10に変数bをコピーした伝統的な価値観の方法、及びB点によって、その変数Bを指し、2がオブジェクトint型の値オブジェクト10を生成し、それにポイントをしましょう。
オブジェクトインスタンス変数伝送
例(Pythonの2.0+)
#!/usr/bin/python
# -*- coding: UTF-8 -*-
# 可写函数说明
def changeme( mylist ):
"修改传入的列表"
mylist.append([1,2,3,4])
print "函数内取值: ", mylist
return
# 调用changeme函数
mylist = [10,20,30]
changeme( mylist )
print "函数外取值: ", mylist
求心性機能の例と次のように出力結果であるので、同じを参照して、オブジェクトの最後に新しいコンテンツを追加します。
関数値:[10、20、30、[1、2、3、4] 外部値機能:[10、20、30、[1、2、3、4]
パラメータ
以下は、関数を呼び出す際に、正式なパラメータの型を使用することができます:
- 必須パラメータ
- キーワード引数
- デフォルトパラメータ
- 可変長パラメータ
必須パラメータ
必要なパラメータは、正しい順序で関数に渡されます。呼の数と同じにするときに宣言しなければならないとき。
コールプリントミー()関数は、パラメータを渡す必要があります、または構文エラーは以下となります。
例(Pythonの2.0+)
#!/usr/bin/python
# -*- coding: UTF-8 -*-
#可写函数说明
def printme( str ):
"打印任何传入的字符串"
print str
return
#调用printme函数
printme()
上記の出力の例:
トレースバック(最新の呼び出しの最後): <モジュール>内のファイル"test.py"、11行目、 プリントミー() はTypeError:()プリントミーは、正確に1引数(0が与えられた)を取り
キーワード引数
あなたは、キーワードパラメータを使用してPythonインタプリタがするので、関数呼び出し文の秩序パラメータは、矛盾していることができる場合には、パラメータ名とパラメータ値と一致します。
次の例では、()関数を呼び出してプリントミーパラメータ名を使用しています。
例(Pythonの2.0+)
#!/usr/bin/python
# -*- coding: UTF-8 -*-
#可写函数说明
def printme( str ):
"打印任何传入的字符串"
print str
return
#调用printme函数
printme( str = "My string")
上記の出力の例:
私の文字列
パラメータの順序をキー入力することができ、次の例では、より明確ではない重要なショーです。
例(Pythonの2.0+)
#!/usr/bin/python
# -*- coding: UTF-8 -*-
#可写函数说明
def printinfo( name, age ):
"打印任何传入的字符串"
print "Name: ", name
print "Age ", age
return
#调用printinfo函数
printinfo( age=50, name="miki" )
上記の出力の例:
名前:三木 年齢50
デフォルトパラメータ
関数を呼び出すとき、デフォルトが渡されない場合、パラメータの値、デフォルト値と見なされます。通常の印刷の下にデフォルトの年齢は、年齢が渡されない場合:
例(Pythonの2.0+)
#!/usr/bin/python
# -*- coding: UTF-8 -*-
#可写函数说明
def printinfo( name, age = 35 ):
"打印任何传入的字符串"
print "Name: ", name
print "Age ", age
return
#调用printinfo函数
printinfo( age=50, name="miki" )
printinfo( name="miki" )
上記の出力の例:
名前:三木 年齢50 名前:三木 年齢35
可変長パラメータ
あなたは、元の文よりも多くのパラメータを扱うことができる機能が必要な場合があります。これらのパラメータは、宣言を命名しない、可変長パラメータ、および異なる2種類のパラメータと呼ばれます。次のように基本的な構文は次のとおりです。
def functionname([formal_args,] *var_args_tuple ):
"函数_文档字符串"
function_suite
return [expression]
プラス、アスタリスク(*)は、すべての変数の無名のパラメータの変数名に格納されます。可変長パラメータの例として次のように
例(Pythonの2.0+)
#!/usr/bin/python
# -*- coding: UTF-8 -*-
# 可写函数说明
def printinfo( arg1, *vartuple ):
"打印任何传入的参数"
print "输出: "
print arg1
for var in vartuple:
print var
return
# 调用printinfo 函数
printinfo( 10 )
printinfo( 70, 60, 50 )
上記の出力の例:
出力: 10 出力: 70 60 50
無名関数
匿名関数を作成するために、ラムダを使用してのpython。
- ラムダ関数は、独自の名前空間を持ち、外には、独自の引数リストやグローバル名前空間のパラメータにアクセスすることはできません。
文法
次のようにラムダ関数の構文は、一つだけのステートメントが含まれています。
ラムダ[引数1 [、ARG2、..... ARGN]]:式
例を以下に示します。
例(Pythonの2.0+)
#!/usr/bin/python
# -*- coding: UTF-8 -*-
# 可写函数说明
sum = lambda arg1, arg2: arg1 + arg2
# 调用sum函数
print "相加后的值为 : ", sum( 10, 20 )
print "相加后的值为 : ", sum( 20, 20 )
上記の出力の例:
30:加算した値 付加価値を40
return文
機能を終了するreturn文[式]は、発信者への選択式を返します。無パラメータ値を持つreturn文はNoneを返します。以前の例では、値を返す方法を示していない、次の例では、それを行う方法を紹介します。
例(Pythonの2.0+)
#!/usr/bin/python
# -*- coding: UTF-8 -*-
# 可写函数说明
def sum( arg1, arg2 ):
# 返回2个参数的和."
total = arg1 + arg2
print "函数内 : ", total
return total
# 调用sum函数
total = sum( 10, 20 )
上記の出力の例:
30:関数内で
変数のスコープ
変数のスコープは、あなたがアクセス可能で、特定の変数名プログラムの一部を決定します。二つの基本的な変数のスコープは、以下のように:
- グローバル変数
- ローカル変数
グローバルとローカル変数
これは、ローカルスコープを有するものとして定義され、関数の外に定義された変数の関数内のグローバルスコープを有します。
ローカル変数は、そのアクセス関数内で宣言することができ、プログラム全体の範囲内でグローバル変数にアクセスすることができます。関数を呼び出すときに、関数名の中に宣言されたすべての変数がスコープに追加されます。例を以下に示します。
例(Pythonの2.0+)
#!/usr/bin/python
# -*- coding: UTF-8 -*-
total = 0 # 这是一个全局变量
# 可写函数说明
def sum( arg1, arg2 ):
#返回2个参数的和."
total = arg1 + arg2 # total在这里是局部变量.
print "函数内是局部变量 : ", total
return total
#调用sum函数
sum( 10, 20 )
print "函数外是全局变量 : ", total
上記の出力の例:
関数内ローカル変数:30 外部関数のグローバル変数です:0