19.Python-関数機能、Scope、Parameters
Function
関数とは?
重複するコードを組み合わせて機能を実行します.
→繰り返し使用可能で、コードの読みやすさを向上させる.
きっとInputとOutputがinputは
parameter
,outputはreturn 값
である.return値がない場合はNoneを返します.
使用する理由
コードの再利用性を向上させ、重複を最小限に抑える.
プログラム分解-プログラムまたは機能に基づいて分解され、テストが容易になります.
関数は定義と呼び出しで構成されます。
def文として定義され、関数名()として呼び出されます.
def文に遭遇した場合、その関数名をネーミングスペースに保存します.
->id(関数名)を使用して数値アドレスを表示できます.変数も同じです.
Scope
グローバル(グローバル):一番外側
ローカル(地域)
ただし,関数内部から外部変数としてアクセスできる.
->内部にあるかどうかをチェックし、ない場合は徐々に外部に確認します.(non-localまたはglobal)
シャドウエフェクトシャドウエフェクト:変数名が同じである場合、小さな範囲変数は大きな範囲の変数を隠す
関数はオブジェクトなので、変数に割り当てることができます.
関数で変数を検索する場合は、LEGBルールに従って検索します.
LEGBルール
Local → Enclosure → Global → Built-in
Parameters
関数はinputparameter
を受信し、return
の値を出力に返します.
位置パラメータ(位置パラメータ)
→入力パラメータの順序はパラメータの順序で渡されます.
→入力パラメータの順序が変わっても、把握しにくいという欠点があります.
Keyword Arguments
パラメータ順に値を渡さなくてもいいです.
これは、関数を呼び出すときにパラメータ名とともに値を渡す方法です.
func(parameter2 = value2, parameter1 = value1)
どのパラメータがどのパラメータを入力するかを明確に知ることができます.
Mixed arguments
Parameter Default Value
default valueを設定すると、値が入力されていなくても関数を呼び出すことができます.
関数を定義するときに、パラメータの値を指定します.
def func(param1, param2 = default_value):
parameter2
異なる値を入力しても正常に動作します.default値がある場合はnon-defaultパラメータの後にする必要があります.
そうでなければ、
SyntaxError: non-default argument follows default argument
が生成されます.def func(a=1,b,c):
print(a)
print(b)
print(c)
func(2,3)
# SyntaxError: non-default argument follows default argument
→最初の因数2がaパラメータに入るべきか、初期値を変えるべきか、bに入るべきか分からないからです.Variable length arguments
*args
をパラメータとして表す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() missing1 required keyword-only argument: 'age'`
TypeError: func_param_with_var_args() missing 1 required keyword-only argument: 'age'
エラーが発生しました.→
*args
パラメータは複数のパラメータを受け入れることができるので、age
パラメータの値がわかりません.→解決:
age=20
のように、キーワードage
を使用してパラメータ値を指定します.または、*args
パラメータを最後尾に送信し、20
を2番目の引数として入力します.Variable length keyword arguments
**kwargs
をパラメータとして表す# 에러발생
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")
以上の例では、
SyntaxError: invalid syntax
エラーが表示されます.age
およびaddress
前方へ移動?address
複数の価格を徴収します.TypeError: mixed_params() got multiple values for argument 'address'
address
parameterは、キーワードで引数を入力するkeyword-only argument
である.## 수정본
def mixed_params(age, name="아이유", *args, address, **kwargs):
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")
# name=정우성
# args=('01012341234', 'male')
# age=20
# kwargs={'mobile': '01012341234'}
# address=seoul
kwargs
にディクソン形式で入力されます.上記の例でデバッガ値
"아이유"
を表示するには、次の手順に従います.関数パラメータの順序
func(param1, param2, param3=default_value, *args, key=value, **kwargs)
位置パラメータ-ポーリングパラメータ-可変位置パラメータ-キーワードパラメータ-可変キーワードパラメータRegular Positional args. : 買収の順序を守る基本的な形式
Default args. : パラメータに初期値が設定されています.
Variable length positional args. : 複数の位置パラメータ
*args
を入力した場合keyword-only args. : キーワードを引数として入力します.
Variable length keyword args. : 入力された値がパラメータに含まれていない場合
**kwargs
https://docs.python.org/ko/3/tutorial/controlflow.html#more-on-defining-functions
https://getkt.com/blog/python-keyword-only-arguments/
https://dojang.io/mod/page/view.php?id=2347
Reference
この問題について(19.Python-関数機能、Scope、Parameters), 我々は、より多くの情報をここで見つけました https://velog.io/@palza4dev/TIL-19.-파이썬-Function-Scope-Parametersテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol