可能であれば、すべてのパラメータを関数定義に書き出し、理想的には説明的な名前を付けるべきです。
Zen of Pythonは
明示的、暗黙よりも優れていると言います。
とも
可読性がカウントされます。
パラメータを明示的にすると、関数が多すぎたり小さすぎたり、キーワードパラメータが存在しない場合など、多くの間違いを防ぐのに役立ちます。
これはまた、関数から期待されるパラメータの数とどの順序で、また可能なキーワードパラメータのデフォルトが何であるかを定義から簡単に見つけることができるため、読みやすくするのに役立ちます。場合によっては、ドキュメントを見なくても良いパラメータ名を使って関数が何をするかを推測することもできます。
一部のIDEでは、通話を書き込んだときに自動的に定義をルックアップして、入力中に発生する可能性のある問題を警告します。
この操作を行います。*args
と012を使用することがOKであるときに
def twiddle_knobs(*args, **kwargs): # WARNING: never do this!
my_radio.modify_control(radio.TUNEFREQ, max(min(args[0], 120.0), 85.0))
my_radio.modify_control(radio.VOL_MASTER, args[1]/100.0)
if kwargs.get("panning") is not None:
my_radio.modify_control(radio.VOL_LEFT, min(1.0 - kwargs["panning"]/100.0, 1.0))
my_radio.modify_control(radio.VOL_RIGHT, min(1.0 + kwargs["panning"]/100.0, 1.0))
for control, param, default in ((radio.EQU_BASS, "bass", 6.0),
(radio.EQU_MID, "midrange", -2.0),
(radio.EQU_TREB, "treble", 1.5)):
my_radio.modify_control(control, kwargs.get(param, default), radio.DB)
:これをしないでください
def twiddle_knobs(tuning, volume, panning=None, bass=6.0, midrange=-2.0, treble=1.5):
"""Modify the most important radio controls."""
my_radio.modify_control(radio.TUNEFREQ, value=max(min(tuning, 120.0), 85.0))
my_radio.modify_control(radio.VOL_MASTER, value=(volume/100.0))
if panning is not None:
my_radio.modify_control(radio.VOL_LEFT, value=min(1.0 - panning/100.0, 1.0))
my_radio.modify_control(radio.VOL_RIGHT, value=min(1.0 + panning/100.0, 1.0))
for control, value in ((radio.EQU_BASS, bass),
(radio.EQU_MID, midrange),
(radio.EQU_TREB, treble)):
my_radio.modify_control(control, value=value, unit=radio.DB)
を?あなたは が似ているということのリストを受け取り、同じ機能を提供する必要がある場合*args
ため
このリストは網羅的なものではありませんが、一般的な考えを示します。
最初の文字を使用してください。 functio-defだけで、5つのパラメータが必要であることがわかります。これは情報獲得の一種です。また、関数内にいくつかのコードを保存することもできます。 (仮定:p1-p5が必要です) – sascha
@saschaあなたはこれを答えにして、PythonのZenの「明示的な方が暗黙の方が良い」という原則に言及する可能性があります。 – blubberdiblub
@blubberdiblub PythonのZenのあなたの言及がここでは非常に関係しているので、自由に行ってください。 – sascha