ホームページ バックエンド開発 Python チュートリアル Pythonカスタム関数の作成、呼び出し、関数パラメータの詳細な説明

Pythonカスタム関数の作成、呼び出し、関数パラメータの詳細な説明

Jun 16, 2016 am 08:44 AM
python Python関数呼び出し

関数は、単一の関数または関連する関数を実装するために使用される、整理された再利用可能なコード セグメントです。
関数により、アプリケーションのモジュール性とコードの再利用が向上します。 Python には print() などの多くの組み込み関数が用意されていることはすでにご存知でしょう。ただし、ユーザー定義関数と呼ばれる独自の関数を作成することもできます。
1. 関数を定義します。
必要な関数を使用して関数を定義できます。

は次のとおりです。

1. 関数コード ブロックは def キーワードで始まり、その後に関数識別子名と括弧 () が続きます。
2. 入力パラメータと独立変数は括弧で囲む必要があります。パラメータは括弧内で定義できます。
3. 関数ステートメントの最初の行では、関数の説明を保存するために使用されるドキュメント文字列をオプションで使用できます。
4. 関数の内容はコロンで始まり、インデントされます。
5.Return[expression] は関数を終了し、オプションで呼び出し元に値を返します。式を指定せずに返すことは、None を返すことと同じです。

構文

コードをコピー コードは次のとおりです:
def functionname(parameters):
"Function_docstring"
function_suite
return [expression]
デフォルトでは、パラメータ値とパラメータ名は関数宣言で定義された順序で照合されます。

以下は、文字列を入力パラメータとして受け取り、それを標準の表示デバイスに出力する単純な Python 関数です。

コードをコピー コードは次のとおりです:
def printme( str ):
"受信した文字列を標準ディスプレイに出力しますデバイス "
print str
return

2. 関数呼び出し
関数を定義するには、関数に名前を付け、関数に含まれるパラメーターとコード ブロック構造を指定するだけです。この関数の基本構造が完成したら、別の関数呼び出しを通じて、または Python プロンプトから直接実行できます。

次の例は printme() 関数を呼び出します:

コードをコピーします コードは次のとおりです:
#!/usr /bin/python

# 関数定義はここです
def printme( str ):
"受信文字列を出力します"
print str;
return;

# これで printme 関数を呼び出すことができます
printme("ユーザー定義関数を呼び出したい!");
printme("もう一度同じ関数を呼び出します");
#上記の例の出力結果:

#ユーザー定義関数を呼び出したい!
#同じ関数をもう一度呼び出したい

3. パラメータの値渡しとパラメータの参照渡し
Python のパラメータ (独立変数) はすべて参照渡しです。関数内のパラメータを変更すると、この関数を呼び出す関数内の元のパラメータも変更されます。例:

コードをコピー コードは次のとおりです:
#!/usr/bin/python

#書き込み可能な関数の説明
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] ]]

4. 関数パラメータ
Python 関数で使用できるパラメータの種類:

1. 必須パラメータ
2. 名前付きパラメータ
3. デフォルトパラメータ
4. 可変長パラメータ

1. 必要なパラメータ

必須パラメータは正しい順序で関数に渡す必要があります。コール時の数量は申告時の数量と同じである必要があります。
printme() 関数を呼び出すときは、パラメーターを渡す必要があります。そうしないと、構文エラーが発生します:

コードをコピーします コードは次のとおりです。
#!/usr/bin/python

#書き込み可能な関数の説明
def printme( str ):
"受信文字列を出力します"
print str;
return;

#printme 関数を呼び出す
printme();
#上記の例の出力結果:

#Traceback (最新の呼び出しは最後):
# ファイル "test.py"、11 行目、
# printme();
#TypeError: printme() は正確に受け取ります引数 1 つ (0 が与えられます)


2. 名前付きパラメータ

名前付きパラメータは関数呼び出しと密接に関連しています。呼び出し元はパラメータの名前を使用して、渡されるパラメータの値を決定します。 Python インタープリターはパラメーター名とパラメーター値を照合できるため、渡されていないパラメーターをスキップしたり、パラメーターを順序どおりに渡すことができません。名前付きパラメータを使用して printme() 関数を呼び出します:

コードをコピーします コードは次のとおりです:
#!/usr/bin/python

#可写函数说明
def printme( str ):
   "打印任何传入的字符串"
   print str;
   return;

#调用printme函数
printme( str = "My string");
#以上实例输出结果:

#My string


下例能将命名参数顺序不重要展示得更清楚:
复制代码 代码如下:
#!/usr/bin/python

#可写函数说明
def printinfo( name, age ):
   "打印任何传入的字符串"
   print "Name: ", name;
   print "Age ", age;
   return;

#调用printinfo函数
printinfo( age=50, name="miki" );
#以上实例输出结果:

#Name:  miki
#Age  50


3、缺省参数

调用函数时,缺省参数的值如果没有传入,则被认为是默认值。下例会打印默认的age,如果age没有被传入:

复制代码 代码如下:
#!/usr/bin/python

#可写函数说明
def printinfo( name, age = 35 ):
   "打印任何传入的字符串"
   print "Name: ", name;
   print "Age ", age;
   return;

#调用printinfo函数
printinfo( age=50, name="miki" );
printinfo( name="miki" );
#以上实例输出结果:

#Name:  miki
#Age  50
#Name:  miki
#Age  35

4、不定长参数

你可能需要一个函数能处理比当初声明时更多的参数。这些参数叫做不定长参数,和上述2种参数不同,声明时不会命名。基本语法如下:

复制代码 代码如下:
def functionname([formal_args,] *var_args_tuple ):
   "函数_文档字符串"
   function_suite
   return [expression]
加了星号(*)的变量名会存放所有未命名的变量参数。选择不多传参数也可。如下实例:
复制代码 代码如下:
#!/usr/bin/python

# 可写函数说明
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

五、匿名函数
用lambda关键词能创建小型匿名函数。这种函数得名于省略了用def声明函数的标准步骤。

Lambda函数能接收任何数量的参数但只能返回一个表达式的值,同时只能不能包含命令或多个表达式。
匿名函数不能直接调用print,因为lambda需要一个表达式。
lambda函数拥有自己的名字空间,且不能访问自有参数列表之外或全局名字空间里的参数。
虽然lambda函数看起来只能写一行,却不等同于C或C++的内联函数,后者的目的是调用小函数时不占用栈内存从而增加运行效率。
语法

lambda函数的语法只包含一个语句,如下:

复制代码 代码如下:
lambda [arg1 [,arg2,.....argn]]:expression
如下实例:
复制代码 代码如下:
#!/usr/bin/python

#可写函数说明
sum = lambda arg1, arg2: arg1 + arg2;

#调用sum函数
print "Value of total : ", sum( 10, 20 )
print "Value of total : ", sum( 20, 20 )
#以上实例输出结果:

#Value of total :  30
#Value of total :  40

六、关于return语句
return语句[表达式]退出函数,选择性地向调用方返回一个表达式。不带参数值的return语句返回None。之前的例子都没有示范如何返回数值,下例便告诉你怎么做:

复制代码 代码如下:
#!/usr/bin/python

# 可写函数说明
def sum( arg1, arg2 ):
   # 返回2个参数的和."
   total = arg1 + arg2
   print "Inside the function : ", total
   return total;

# 调用sum函数
total = sum( 10, 20 );
print "Outside the function : ", total
#以上实例输出结果:

#Inside the function :  30
#Outside the function :  30


7. 変数のスコープ
プログラムのすべての変数にどこからでもアクセスできるわけではありません。アクセス許可は、変数が割り当てられている場所によって異なります。

変数のスコープによって、プログラムのどの部分に特定の変数名にアクセスできるかが決まります。最も基本的な 2 つの変数スコープは次のとおりです:
1. グローバル変数
2. ローカル変数

8. 変数とローカル変数
関数内で定義された変数はローカル スコープを持ち、関数の外で定義された変数はグローバル スコープを持ちます。

ローカル変数は宣言されている関数内でのみアクセスできますが、グローバル変数はプログラム全体からアクセスできます。関数が呼び出されると、関数内で宣言されたすべての変数名がスコープに追加されます。次の例:

コードをコピー コードは次のとおりです:
#!/usr/bin/python

total = 0; # これはグローバル変数です。
# 書き込み可能な関数の説明
def sum( arg1, arg2 ):
# 2 つのパラメータの合計を返します。"
total = arg1 + arg2; #ここの total はローカル変数です。
print "関数内 local total : ", total
return total;

#sum 関数を呼び出す
sum( 10, 20 );
print "関数外のグローバル合計: ", total
#上記の例の出力結果:

#関数内ローカル合計 : 30
#関数外グローバル合計 : 0

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

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

PHPおよびPython:さまざまなパラダイムが説明されています PHPおよびPython:さまざまなパラダイムが説明されています Apr 18, 2025 am 12:26 AM

PHPは主に手順プログラミングですが、オブジェクト指向プログラミング(OOP)もサポートしています。 Pythonは、OOP、機能、手続き上のプログラミングなど、さまざまなパラダイムをサポートしています。 PHPはWeb開発に適しており、Pythonはデータ分析や機械学習などのさまざまなアプリケーションに適しています。

PHPとPythonの選択:ガイド PHPとPythonの選択:ガイド Apr 18, 2025 am 12:24 AM

PHPはWeb開発と迅速なプロトタイピングに適しており、Pythonはデータサイエンスと機械学習に適しています。 1.PHPは、単純な構文と迅速な開発に適した動的なWeb開発に使用されます。 2。Pythonには簡潔な構文があり、複数のフィールドに適しており、強力なライブラリエコシステムがあります。

Sublime Code Pythonを実行する方法 Sublime Code Pythonを実行する方法 Apr 16, 2025 am 08:48 AM

PythonコードをSublimeテキストで実行するには、最初にPythonプラグインをインストールし、次に.pyファイルを作成してコードを書き込み、Ctrl Bを押してコードを実行する必要があります。コードを実行すると、出力がコンソールに表示されます。

PHPとPython:彼らの歴史を深く掘り下げます PHPとPython:彼らの歴史を深く掘り下げます Apr 18, 2025 am 12:25 AM

PHPは1994年に発信され、Rasmuslerdorfによって開発されました。もともとはウェブサイトの訪問者を追跡するために使用され、サーバー側のスクリプト言語に徐々に進化し、Web開発で広く使用されていました。 Pythonは、1980年代後半にGuidovan Rossumによって開発され、1991年に最初にリリースされました。コードの読みやすさとシンプルさを強調し、科学的コンピューティング、データ分析、その他の分野に適しています。

Python vs. JavaScript:学習曲線と使いやすさ Python vs. JavaScript:学習曲線と使いやすさ Apr 16, 2025 am 12:12 AM

Pythonは、スムーズな学習曲線と簡潔な構文を備えた初心者により適しています。 JavaScriptは、急な学習曲線と柔軟な構文を備えたフロントエンド開発に適しています。 1。Python構文は直感的で、データサイエンスやバックエンド開発に適しています。 2。JavaScriptは柔軟で、フロントエンドおよびサーバー側のプログラミングで広く使用されています。

Golang vs. Python:パフォーマンスとスケーラビリティ Golang vs. Python:パフォーマンスとスケーラビリティ Apr 19, 2025 am 12:18 AM

Golangは、パフォーマンスとスケーラビリティの点でPythonよりも優れています。 1)Golangのコンピレーションタイプの特性と効率的な並行性モデルにより、高い並行性シナリオでうまく機能します。 2)Pythonは解釈された言語として、ゆっくりと実行されますが、Cythonなどのツールを介してパフォーマンスを最適化できます。

vscodeでコードを書く場所 vscodeでコードを書く場所 Apr 15, 2025 pm 09:54 PM

Visual Studioコード(VSCODE)でコードを作成するのはシンプルで使いやすいです。 VSCODEをインストールし、プロジェクトの作成、言語の選択、ファイルの作成、コードの書き込み、保存して実行します。 VSCODEの利点には、クロスプラットフォーム、フリーおよびオープンソース、強力な機能、リッチエクステンション、軽量で高速が含まれます。

メモ帳でPythonを実行する方法 メモ帳でPythonを実行する方法 Apr 16, 2025 pm 07:33 PM

メモ帳でPythonコードを実行するには、Python実行可能ファイルとNPPEXECプラグインをインストールする必要があります。 Pythonをインストールしてパスを追加した後、nppexecプラグインでコマンド「python」とパラメーター "{current_directory} {file_name}"を構成して、メモ帳のショートカットキー「F6」を介してPythonコードを実行します。

See all articles