工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Industrial programming >> Python

Python-関数

前のページ次のページ

関数は、関連する単一のアクションを実行するために使用される、整理された再利用可能なコードのブロックです。関数は、アプリケーションのモジュール性を高め、高度なコード再利用を提供します。

ご存知のように、Python には print() などの組み込み関数が多数用意されていますが、独自の関数を作成することもできます。これらの関数は、ユーザー定義関数と呼ばれます。

関数の定義

関数を定義して、必要な機能を提供できます。 Python で関数を定義するための簡単なルールを次に示します。

構文

def functionname( parameters ):
   "function_docstring"
   function_suite
   return [expression]

デフォルトでは、パラメータには位置の動作があり、定義されたのと同じ順序でパラメータに通知する必要があります.

次の関数は、文字列を入力パラメーターとして受け取り、標準画面に表示します。

def printme( str ):
   "This prints a passed string into this function"
   print str
   return

関数の呼び出し

関数の定義は、関数に名前を付け、関数に含めるパラメーターを指定し、コード ブロックを構造化するだけです。

関数の基本構造が完成したら、別の関数から呼び出すか、Python プロンプトから直接呼び出すことで、関数を実行できます。以下は、printme() 関数を呼び出す例です −

ライブデモ
#!/usr/bin/python

# Function definition is here
def printme( str ):
   "This prints a passed string into this function"
   print str
   return;

# Now you can call printme function
printme("I'm first call to user defined function!")
printme("Again second call to the same function")

上記のコードが実行されると、次の結果が生成されます-

I'm first call to user defined function!
Again second call to the same function

参照渡しと値渡し

Python 言語のすべてのパラメーター (引数) は、参照によって渡されます。つまり、関数内でパラメーターが参照するものを変更すると、その変更は呼び出し元の関数にも反映されます。たとえば-

ライブデモ
#!/usr/bin/python

# Function definition is here
def changeme( mylist ):
   "This changes a passed list into this function"
   mylist.append([1,2,3,4]);
   print "Values inside the function: ", mylist
   return

# Now you can call changeme function
mylist = [10,20,30];
changeme( mylist );
print "Values outside the function: ", mylist

ここでは、渡されたオブジェクトの参照を維持し、同じオブジェクトに値を追加しています。したがって、これは次の結果を生成します-

Values inside the function:  [10, 20, 30, [1, 2, 3, 4]]
Values outside the function:  [10, 20, 30, [1, 2, 3, 4]]

引数が参照によって渡され、参照が呼び出された関数内で上書きされる例がもう 1 つあります。

ライブデモ
#!/usr/bin/python

# Function definition is here
def changeme( mylist ):
   "This changes a passed list into this function"
   mylist = [1,2,3,4]; # This would assig new reference in mylist
   print "Values inside the function: ", mylist
   return

# Now you can call changeme function
mylist = [10,20,30];
changeme( mylist );
print "Values outside the function: ", mylist

パラメータ mylist 関数 changeme に対してローカルです。関数内で mylist を変更しても mylist には影響しません .関数は何も達成せず、最終的にこれは次の結果を生成します-

Values inside the function:  [1, 2, 3, 4]
Values outside the function:  [10, 20, 30]

関数の引数

次のタイプの仮引数を使用して関数を呼び出すことができます −

必須の引数

必須引数は、正しい位置の順序で関数に渡される引数です。ここで、関数呼び出しの引数の数は、関数定義と正確に一致する必要があります。

関数 printme() を呼び出すには 、必ず1つの引数を渡す必要があります。そうしないと、次のような構文エラーが発生します-

ライブデモ
#!/usr/bin/python

# Function definition is here
def printme( str ):
   "This prints a passed string into this function"
   print str
   return;

# Now you can call printme function
printme()

上記のコードが実行されると、次の結果が生成されます-

Traceback (most recent call last):
   File "test.py", line 11, in <module>
      printme();
TypeError: printme() takes exactly 1 argument (0 given)

キーワード引数

キーワード引数は関数呼び出しに関連しています。関数呼び出しでキーワード引数を使用すると、呼び出し元はパラメーター名で引数を識別します。

これにより、Python インタープリターは提供されたキーワードを使用して値をパラメーターと一致させることができるため、引数をスキップしたり、順不同に配置したりできます。 printme() に対してキーワード呼び出しを行うこともできます 次の方法で機能します-

ライブデモ
#!/usr/bin/python

# Function definition is here
def printme( str ):
   "This prints a passed string into this function"
   print str
   return;

# Now you can call printme function
printme( str = "My string")

上記のコードが実行されると、次の結果が生成されます-

My string

次の例は、より明確な図を示しています。パラメータの順序は重要ではないことに注意してください。

ライブデモ
#!/usr/bin/python

# Function definition is here
def printinfo( name, age ):
   "This prints a passed info into this function"
   print "Name: ", name
   print "Age ", age
   return;

# Now you can call printinfo function
printinfo( age=50, name="miki" )

上記のコードが実行されると、次の結果が生成されます-

Name:  miki
Age  50

デフォルト引数

デフォルト引数は、その引数の関数呼び出しで値が指定されていない場合にデフォルト値を想定する引数です。次の例は、デフォルトの引数に関するアイデアを示しています。渡されない場合、デフォルトの年齢を出力します-

ライブデモ
#!/usr/bin/python

# Function definition is here
def printinfo( name, age = 35 ):
   "This prints a passed info into this function"
   print "Name: ", name
   print "Age ", age
   return;

# Now you can call printinfo function
printinfo( age=50, name="miki" )
printinfo( name="miki" )

上記のコードが実行されると、次の結果が生成されます-

Name:  miki
Age  50
Name:  miki
Age  35

可変長引数

関数の定義時に指定したよりも多くの引数について、関数を処理する必要がある場合があります。これらの引数は可変長と呼ばれます 引数は、必須の引数やデフォルトの引数とは異なり、関数定義で名前が付けられていません。

非キーワード変数引数を持つ関数の構文は次のとおりです-

def functionname([formal_args,] *var_args_tuple ):
   "function_docstring"
   function_suite
   return [expression]

アスタリスク (*) は、すべての非キーワード変数引数の値を保持する変数名の前に置かれます。関数呼び出し中に追加の引数が指定されていない場合、このタプルは空のままです。以下は簡単な例です-

ライブデモ
#!/usr/bin/python

# Function definition is here
def printinfo( arg1, *vartuple ):
   "This prints a variable passed arguments"
   print "Output is: "
   print arg1
   for var in vartuple:
      print var
   return;

# Now you can call printinfo function
printinfo( 10 )
printinfo( 70, 60, 50 )

上記のコードが実行されると、次の結果が生成されます-

Output is:
10
Output is:
70
60
50

匿名 関数

これらの関数は、def を使用して標準的な方法で宣言されていないため、匿名と呼ばれます。 キーワード。 ラムダを使用できます 小さな無名関数を作成するためのキーワード。

構文

ラムダの構文 関数には、次のような単一のステートメントのみが含まれます-

lambda [arg1 [,arg2,.....argn]]:expression

以下は、ラムダがどのように機能するかを示す例です 関数の形式が機能します −

ライブデモ
#!/usr/bin/python

# Function definition is here
sum = lambda arg1, arg2: arg1 + arg2;

# Now you can call sum as a function
print "Value of total : ", sum( 10, 20 )
print "Value of total : ", sum( 20, 20 )

上記のコードが実行されると、次の結果が生成されます-

Value of total :  30
Value of total :  40

リターン 声明

ステートメント return [expression] は関数を終了し、オプションで式を呼び出し元に返します。引数のない return ステートメントは return None と同じです。

上記の例はすべて値を返しません。次のように関数から値を返すことができます-

ライブデモ
#!/usr/bin/python

# Function definition is here
def sum( arg1, arg2 ):
   # Add both the parameters and return them."
   total = arg1 + arg2
   print "Inside the function : ", total
   return total;

# Now you can call sum function
total = sum( 10, 20 );
print "Outside the function : ", total 

上記のコードが実行されると、次の結果が生成されます-

Inside the function :  30
Outside the function :  30

変数の範囲

プログラム内のすべての変数は、そのプログラム内のすべての場所でアクセスできるとは限りません。これは、変数を宣言した場所によって異なります。

変数のスコープは、特定の識別子にアクセスできるプログラムの部分を決定します。 Python には、変数の 2 つの基本的なスコープがあります −

グローバル変数とローカル変数

関数本体内で定義された変数にはローカル スコープがあり、外部で定義された変数にはグローバル スコープがあります。

これは、ローカル変数は、それらが宣言されている関数内でのみアクセスできることを意味しますが、グローバル変数は、すべての関数によってプログラム本体全体でアクセスできます。関数を呼び出すと、関数内で宣言された変数がスコープに取り込まれます。以下は簡単な例です-

ライブデモ
#!/usr/bin/python

total = 0; # This is global variable.
# Function definition is here
def sum( arg1, arg2 ):
   # Add both the parameters and return them."
   total = arg1 + arg2; # Here total is local variable.
   print "Inside the function local total : ", total
   return total;

# Now you can call sum function
sum( 10, 20 );
print "Outside the function global total : ", total 

上記のコードが実行されると、次の結果が生成されます-

Inside the function local total :  30
Outside the function global total :  0

Python

  1. Python 匿名/Lambda 関数
  2. Python ジェネレーター
  3. Python クロージャー
  4. Python デコレータ
  5. StratasysInsightで人気のある10の機能
  6. C++ 関数とプログラム例
  7. 例を使用した Python 文字列 strip() 関数
  8. 例を含む Python Lambda 関数
  9. Python abs() 関数:絶対値の例
  10. 例を使用した Python round() 関数
  11. 例を使用した Python map() 関数