[ TOC]
WeiyiGeek。PythonとCの基本的なデータタイプ間の対応
説明:Python言語の習得に時間がかかり、pythonにswitch-caseステートメントがないことを確認するのに長い時間がかかりました。公式ドキュメントを確認すると、if-elseif-elseifに置き換えることができると記載されています。同時に、他のソリューションでは、辞書を使用して同じ機能を実現する方が簡単です。
辞書の各キーに対応する値を書き込むには、次のような方法があります。
switch = {“valueA”:lambda x,y:functionA(x,y),”valueB”:functionB,”valueC”:functionC}
サンプルデモンストレーション:
#! /usr/bin/env python
# pythonで切り替えます...ケースステートメント
# 呼び出された関数
def add(x,y):print("ケースc:スイッチc辞書形式でadd関数を呼び出す: %d + %d = %d"%(x,y,x+y))
def div(x,y):return"スイッチb辞書はdiv関数を呼び出します: %d + %d = %f"%(x,y,x/y)
# スイッチステートメント効果を実現するための辞書形式のラムダ式
switch={'a':lambda x:x**2,'b':lambda x,y:div(x,y),'c':lambda x,y:add(x,y)}
# 試してみてください...例外をキャッチすることを除いて
try:print("case a : ",switch["a"](2)) #4print("case b :",switch['b'](8,2)) #4.0switch["c"](2,5) #辞書のキー値に従って関数を呼び出す#7
except KeyError as e:print("例外をキャッチ!")
# の結果
case a :4ケースb:スイッチb辞書がdiv関数を呼び出す:8+2=4.000000case c:スイッチc辞書形式でadd関数を呼び出す:2+5=7
質問:関数呼び出しの規則を理解するにはどうすればよいですか?
回答:関数呼び出し規則(呼び出し規則)は、特定のタイプの関数を正しい方法で呼び出す方法を説明します。これには、関数パラメーターがステーションに割り当てられる順序、スタックにプッシュされるパラメーター、およびそれらのパラメーターがレジスターを通過する順序が含まれます。着信、および関数が戻ったときに関数スタックがリサイクルされる方法。
2つの最も基本的な関数呼び出し規則:
2つの同じ/違い:
ctypeモジュールの3つの異なる動的ライブラリリンク方法: