Python Function Parameter
1.default valueparameter non-default valueparameterの前に定義できない理由の個人的な意見。
def registMember(sex='남자', name, age):
print(sex)
print(name)
print(age)
...
registMember('James', 32)
上記のコード基準では、default parameterが先に宣言したときにpositionで区切られた関数では、「James」が性parameterのパラメータなのかnameのパラメータなのか区別できません.このような事態を防ぐために、パイソンはそれを誤った対象として処理したと推測されている.2.位置パラメータと可変長パラメータの注意事項
def func_param_with_var_args(name, *args, age):
print("name=",end=""), print(name)
print("args=",end=""), print(args)
print("age=",end=""), print(age)
func_param_with_var_args("정우성", "01012341234", "seoul", 20)
上記のコードを実行すると、「TypeError:func param with var args()missing 1 requiredキーワード-onlyパラメータ:"age"というエラーが発生します.これはargsがtuple形式のパラメータとして複数の値を受信するために使用され、関数呼び出し部は2番目(01012341234)から最後の(20)をargsと認識し、最後のageが見つからない問題である.この問題を解決するには、次のように宣言と呼び出しを位置パラメータ処理に変更する必要があります. def func_param_with_var_args(name, age, *args):
print("name=",end=""), print(name)
print("args=",end=""), print(args)
print("age=",end=""), print(age)
func_param_with_var_args("정우성", 20, "01012341234", "seoul")
3.可変キーワードパラメータ(variablelengthキーワードarguments)の注意事項
def func_param_with_kwargs(name, age, **kwargs, address=0):
print("name=",end=""), print(name)
print("age=",end=""), print(age)
print("kwargs=",end=""), print(kwargs)
print("address=",end=""), print(address)
func_param_with_kwargs("정우성", "20", mobile="01012341234", address="seoul")
上記のコードを実行すると、addressパラメータのSyntaxError:構文が無効になります.**kwargsは、キーと値からなるデータを受信するパラメータです.
kwagsから順次入力されるキーと値構造のデータはすべてkwagsに入力されるため、後述する単一のパラメータは使用できません.この問題を解決するには、以下のようにパラメータの順序を変更する必要があります.
では、呼び出し中にキーワードパラメータフォーマットを採用したaddressはaddressパラメータとして認識される.
def func_param_with_kwargs(name, age, address=0, **kwargs):
4.位置パラメータとキーワード可変キーワードパラメータ(variablelengthキーワードパラメータ)の注意事項
def mixed_params(name="아이유", *args, age, **kwargs, address):
print("name=",end=""), print(name)
print("args=",end=""), print(args)
print("age=",end=""), print(age)
print("kwargs=",end=""), print(kwargs)
print("address=",end=""), print(address)
mixed_params(20, "정우성", "01012341234", "male" ,mobile="01012341234", address="seoul")
上のコードには以下の問題があります.処理後キー値データをkwargsと衝突(問題3)
def mixed_params(age, address, name="아이유", *args, **kwargs):
....
mixed_params(20, "seoul", "정우성", "01012341234", "male", mobile="01012341234")
Reference
この問題について(Python Function Parameter), 我々は、より多くの情報をここで見つけました https://velog.io/@jinybear/Python-Function-Parameterテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol