ホームページ > バックエンド開発 > Python チュートリアル > Lao Qi から Python を学び、関数に戻る

Lao Qi から Python を学び、関数に戻る

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
リリース: 2016-06-16 08:41:11
オリジナル
1018 人が閲覧しました

関数の基本構造

Python の関数の基本構造:

コードをコピー コードは次のとおりです:

def 関数名 ([パラメータリスト]):

ステートメント

いくつかのメモ:
•関数名の命名規則は、Python の命名要件に従う必要があります。通常は、小文字、単一のアンダースコア、数字などを組み合わせて使用​​します。
•def は関数の始まりです。この略語は、明らかに、何かを定義するという意味です。
•関数名の後に括弧が続きます。括弧内にはパラメータリストを含めることも、パラメータを含めないこともできます
。 •括弧の後のコロン
を忘れないでください • ステートメントは def に対して相対的にインデントされます。Python の習慣に従って、スペースを 4 つインデントします

上記の点を詳しく理解するために、簡単な例を見てください:

コードをコピー コードは次のとおりです:

>>> def name(): #パラメータなしで関数を定義し、この関数をそのまま出力します
... 「qiwsir」を印刷 #シン 4 空のコンパートメント
...
& gt; & gt; & gt; #関数を呼び出し、結果を出力します。 キウシール
>>> def add(x,y): #非常に単純な関数を定義します

... x+y を返します #スペースを 4 つインデントします
...
>>> add(2,3) #関数で 2+3
を計算します 5

上記の add(x,y) 関数では、パラメーター x と y の型が特に指定されていないことに注意してください。実際、この文自体が間違っています。Python では変数に型はなく、オブジェクトのみが型を持つと何度も述べたことを今でも覚えています。x、y はそれらが何であるかを厳密に定義していません。参照されるオブジェクトのタイプ。

なぜですか?ここでのいわゆるパラメータは、本質的には前述の変数と同じものであることを忘れないでください。 Pythonでは事前に変数を宣言する必要はありませんが、言語によっては宣言が必要な場合があります。変数が使用された場合にのみ変数とオブジェクトとの間に対応関係が成立し、それ以外の場合には対応関係が成立しない。オブジェクトにはさまざまなタイプがあります。次に、add(x,y) 関数では、オブジェクトを参照する前に x と y は完全に自由になります。つまり、後続の操作が許可されている限り、任意のオブジェクトを参照できます。エラーが報告されます。


コードをコピー コードは次のとおりです:
>>> add("qiw","sir") #ここでは、x="qiw",y="sir" として、関数で x+y、つまり "qiw"+"sir" 「キウシール」

>>> add("qiwsir",4) トレースバック (最後の呼び出し):

ファイル「」、1 行目、
ファイル「」、行 2、追加
TypeError: 'str' オブジェクトと 'int' オブジェクトを連結できません #エラー メッセージを注意深く読むと、エラーが理解できます


実験結果から、x+y の意味はオブジェクトの種類に完全に依存することがわかりました。 Python では、この依存関係をポリモーフィズムと呼びます。これは、Python と他の静的言語の重要な違いです。 Python では、コードは特定のデータ型を考慮しません。

Python のポリモーフィックな問題については、今後再び遭遇するでしょう。ここでは、この例でのみ示します。次の点に注意してください: Python はデータ型ではなく、オブジェクトのインターフェイスを作成します。

さらに、代入ステートメントを通じて関数と変数間の参照関係を確立することもできます。


コードをコピー コードは次のとおりです: >>> 結果 = add(3,4)
>>> 結果
7


ここでは実際にその機能の秘密を解説します。 add(x,y) が実行される前は、コードが実行されるまで、コンピューター内にオブジェクトが作成されます。これは、以前に学習した文字列やリストなどとまったく同じです。型のオブジェクトの場合、add(x,y) を実行すると、add(x,y) のオブジェクトも作成され、変数の結果との参照関係を確立でき、add(x,y) は演算結果を返します。したがって、結果を通じて操作結果を確認できます。

上の段落を読んで少し疲れたり、めまいを感じたりしても、問題ありません。別の面を読んでください。理解できない場合は、やらないでください。研究が進むにつれて、それは理解されるでしょう。

関数の呼び出し

たくさんの関数の書き方についてお話してきましたが、関数を書くと何の役に立つのでしょうか?プログラム内でどのように呼び出すのでしょうか?

なぜ関数を書くのでしょうか?理論的には、関数を使用しなくてもプログラミングは可能です。以前に数値を推測するプログラムを作成したことがあります。もちろん、Python 関数を使用することはカウントされません。現在関数が使用される主な理由は次のとおりです:
1. プログラミングの難しさを軽減するには、通常、大きくて複雑な問題を一連の単純な小さな問題に分解し、その後、小さな問題をさらに小さな問題に分割し続けます。問題が十分に単純になるまで洗練されたら、分割して克服することができます。 。この分割統治のアイデアを実現するには、小さな問題を 1 つずつ分解し、それらをまとめて大きな問題を解決する関数を記述する必要があります。 (分割統治の考え方はプログラミングにおける重要な考え方、いわゆる「分割統治」手法であることに注意してください。)
2. コードの再利用 (チョン、2 つの音)。プログラミングの過程では、同じコードを連続して繰り返すことはタブーであるため、関数を定義して、プログラム内の複数の場所または複数のプログラムで使用することができます。もちろん、「モジュール」については後ほど説明します (インポートされるものについては以前にも触れました)。また、他のプログラマーが使用できるように関数をモジュールに組み込むこともできます。他のプログラマが定義した関数を使用することもできます (以前に使用した import... など、他の人 (Python を作成した人) が作成した関数を使用した関数) を使用することもできます。これにより、作業の重複が回避され、作業効率が向上します。

まだまだ機能は必要なようです。早速、関数がどのように呼び出されるかを見てみましょう。 add(x,y) を例に取ると、基本的な呼び出しメソッドは以前に示しました。さらに、次のようにすることもできます。

コードをコピー コードは次のとおりです:
>>> def add(x,y): #パラメータ割り当ての特徴をより明確に表示するために、この関数を書き換えます
... Print "x =", x #パラメータ割り当て結果を出力
... print "y=,y
... return x+y
...
>>> add(10,3) #x=10,y=3
x= 10
y= 3
13
>>> add(x=10,y=3) #同上
x= 10
y= 3
13
>>> add(y=10,x=3) #x=3,y=10
x= 3
y= 10
13
>>> add(3,10) #x=3,y=10
x= 3
y= 10
13

関数を定義するとき、パラメータは以前のように割り当てを待機することも、定義時にデフォルト値を割り当てることもできます。例:


コードをコピー コードは次のとおりです:
>>> def time(x,y=2): #y のデフォルト値は 2
... print "x=,x
... print "y=,y
... return x*y
...
>>> 回(3) x= 3
y= 2
6

>>> 回(x=3) x= 3 y= 2

6

>> x= 3
y= 4

12


>>>times("qiwsir") #多態性の特性を再度反映します
x= キウシール
y= 2

'qiwsirqiwsir'




ここで読者に質問があります。暇なときに Python を使用して完了してください。2 つの数値の加算、減算、乗算、除算の関数を作成し、これらの関数を使用して簡単な計算を完了してください。

メモ

コードを記述する際に注意すべき一般的な事項を次に示します。

1. コロンを忘れないでください。ステートメントの最初の行 (if、while、for などの最初の行) の最後には、必ず「:」を入力してください

2. 最初の行から始めます。最上位 (ネストされていない) プログラム コードを識別するには、最初の行から始めます。

3. 対話モードのプロンプトでは空行が重要です。モジュール ファイル内の適合ステートメント内の空白行は、多くの場合無視されます。ただし、対話モードのプロンプトでコードを入力すると、ステートメントは空行で終了します。

4. インデントは一貫している必要があります。ブロックのインデント内にタブとスペースを混在させないでください。
5. while や range の代わりに簡潔な for ループを使用すると、for ループと比較して記述が簡単になり、高速に実行されます。 6. 代入ステートメント内の変数オブジェクトに注意してください。
7. list.append()
など、その場で変更された関数が結果を返すことを期待しないでください。 8. 関数を呼び出すには必ず括弧を使用してください
9. インポートおよびリロードでは拡張子やパスを使用しないでください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート