Python関数の高度な応用を解説
前置き
その関数はよく知られているもので、pythonでは以下のような形式で定義されています。
def 関数名(正式な引数)。
関数本体
関数のカプセル化は、コードブロックの再利用を実現するためです。pythonにはいくつかの基本的な関数が組み込まれており、開発者は独自の関数を定義することもできます(最初に定義してから呼び出すだけです)。
I. 関数呼び出しの手順
<ブロッククオート1. プログラムが関数呼び出しに遭遇した場合、実行を中断する
2、関数の引数に実際のパラメータ値を渡す
3. 関数本体文の実行
4、値を返して実行を続ける
2. パラメータのパックとアンパック
梱包
パラメータのパッキングとは、複数のパラメータを同時に扱えることを意味し、可変長パラメータとも呼ばれる。可変長パラメータは、関数定義の際に主に2つの形式で定義される。パラメータを任意の数だけ受け取り、タプルに格納する*parameterと、複数のKey-Valueペアを受け取り、辞書に格納する**parameterである。
タプルにパックされる
Type property of ResultSet TYPE_FORWARD_ONLY, TYPE_SCROLL_INSENSITIVE,or TYPE_SCROLL_SENSITIVE Explanation.
1. TYPE_FORWORD_ONLY, only forward scrolling.
2. TYPE_SCROLL_INSENSITIVE, two-way scrolling, but not updated in time, that is, if the data in the database has been modified, and does not react in the ResultSet.
3. TYPE_SCROLL_SENSITIVE, scrolls in both directions and keeps track of database updates in order to change the data in the ResultSet.
辞書としてラップする
def demo(**p):
print(p)
demo(x=1,y=2,z=3)
# results
{'x':1,'y':2,'z':3}
パラメータパッキングとは、形式パラメータを*パラメータ名の形に、実パラメータを複数のパラメータに設定し、それを反復可能なオブジェクトのタプルや辞書に加工し、個を全体に詰め込むことである。
アンパッキング
パラメータパッキングとは対照的に、パラメータアンパッキングもsや**sの形をとります。複数の位置引数を持つ関数を呼び出すとき、リスト、タプル、セットなどの反復可能オブジェクトを実引数として使用し、実引数名の前に1を追加すると、Pythonは自動的にそれらを展開し、一連の値を複数の形式パラメータ変数にそれぞれ渡します。
def demo(a,b,c,d):
print(a+B*c/d)
list1=[1,2,3,4]
demo(*list1)
# results
2.5
実パラメータが辞書である場合、**パラメータ名形式を用いてアンラップすることができ、これにより、辞書はパラメータ渡しのためのキーパラメータ的な形式に変換される。この形式のシリアルアンラップでは、実パラメータの辞書の全てのキーが、関数の形式パラメータの名前であるか、関数内の2つのモデルの可変長パラメータに対応していることが必要である。
s={'a':1,'b':2,'c':3}
def demo(a,b,c=4)
print(a,b,c)
demo(**s)
# results
1 2 3
III. 変数の範囲
変数のスコープとは、その変数が使用可能な空間のことである
変数はスコープによって分けられる:グローバル変数、ローカル変数
グローバル変数:関数本体の外で定義された変数はグローバル変数となる
グローバル変数は関数の中でも外でも使用できますが、関数の中で直接変更することはできません。関数の中で変更する場合は、global キーワードを追加しなければなりません(python は関数の中でグローバル変数の値を変更することを推奨していません)。
ローカル変数:関数内で定義された変数はローカル変数である
ローカル変数とは、関数内部で定義された変数のことで、関数本体の外にあるローカル変数は無効です
関数内部で定義されるローカル変数と関数外部で定義されるグローバル変数は2つの概念(同じ名前の変数)です
a=1
def sum()
a=3
# Here a outside the function and a inside the function are two variables
第四に、変数のドキュメントコメントと変数名
1, 関数ドキュメント
関数ドキュメント関数を記述するために使用され、関数内の特別なコメントです。
def sum(a,b):
'''
Returns the sum of two numbers
'''
return a+b
2、機能名取得
__name__ メソッド
>>> print(print.__name__)
print
>>>
3、機能docの文書アクセス
<ブロッククオート__doc__ メソッド
概要
この記事があなたのお役に立ち、BinaryDevelopの他のコンテンツにもっと注目していただけることを願っています!この記事は以上です。
関連
-
[解決済み】CSVの改行文字が引用されていないフィールドで見られるエラー
-
PythonクローラーXPathの構文を1つの記事で紹介
-
部分図を描くための Python Matplotlib ライブラリ
-
[解決済み] IDLEでcalltipsを表示するには?
-
[解決済み] Django の Model オブジェクトを、全てのフィールドをそのままに dict に変換します。
-
[解決済み] ハタハタと軸を同じ長さにするには?
-
[解決済み] Pythonを使用してWebブラウザを閉じる方法
-
[解決済み] Spyder Python "オブジェクト配列は現在サポートされていません。"
-
[解決済み] python socket.settimeout()の正しい使い方
-
は1~2の位置引数を取りますが、3が与えられました。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Python Error: "ValueError: need more than 1 value to unpack" (バリューエラー:解凍に1つ以上の値が必要です
-
[解決済み】Travis CIでpython setup.pyがinvalid command 'bdist_wheel'と表示されるのはなぜですか?
-
[解決済み】PyCharmで環境変数を設定する方法は?
-
Pythonの効率的なデータフレーム処理ツール、Sidetableを推薦します。
-
[解決済み] Node.jsの依存性のためにWindowsでPythonを実行する
-
[解決済み] OSError "を取得する。VideoFileClip関数で「[WinError 6] The handle is invalid」を取得する。
-
[解決済み] なぜnumpyでは負の累乗にできないのですか?
-
[解決済み] Python 3 の処理エラー TypeError: BaseException を継承しないクラスのキャッチは許可されていません。
-
[解決済み] Python スコアボード
-
[解決済み] matlabのfminsearchのnumpy/scipyアナログ版