[TIL] Python - Function (2)
必要な正確なパラメータ数とその構造が分からない場合は?
しかし、parameter dictionaryのみを無条件に受け入れるという制約がある.
価格を払わなかったりStringを渡さなかったりすると、エラーが発生する可能性があります.
(何の値もない場合は、空の配列にも渡します!)
このとき使えるのはkeyword variablelength of arguments!
:数が不定で可変なキーワードarguments
:パラメータにアスタリスクを2つ追加**
**kwargsパラメータフロー可能(0~N) 予め定められていないが、必要なキーワード を柔軟に使用することができる.辞書形式で指定します.
関数のbody内ではdictionaryのようにworksを使用できます.
キーワードを使用せずに値を順番に渡す方法は?
*argsメタグループに変換して関数に渡します
どちらも混ぜ合わせることができ、
これはいかなる形式と数量の論点を許すためです!
(parameterでは非常に柔軟な関数になります!)
👇🏻👇🏻 私が解読したコード
👇🏻👇🏻 別の分のコード
以前にFunctions(2)の投稿で整理しました.
wecodeのコンセプトを見て整理してみましょう!
ネスト機能
重畳関数
:関数に関数が宣言されています.
:親の親関数でのみ呼び出すことができます.
:読み取り可能、接触による の使用
each elements関数をall elements関数で宣言します.
必要に応じて、内部関数を繰り返すしかありません.
親関数の変数を外部から直接アクセスして隔離するが、 は、重畳関数演算により分離された親関数の変数 を演算する.重畳関数は、重畳関数内で親関数の変数または情報を使用する. 親関数は、戻り値でオーバーラップ関数を返します. 親関数から返されるため、親関数の変数は直接アクセスできませんが、親関数から返されるオーバーラップ関数で使用できます.
:ファクトリアレイの実装時、関数またはオブジェクトの作成時
設定値を露出せずに変更できない場合に使用します!
これはタイムリーに設定された求数乗の関数です!
前述のようにネスト関数を使用する場合、
毎回入力するパラメータ数の積を求めることができます!
Decorator (1)
関数をパラメータとして起動! クラスでメソッドを作成する場合、@で始まるdecoratorをよく使用します... @decoratorで宣言された関数は
この関数を実行する前に、decoratorロールの関数を最初に実行し、既存の関数を実行します.
:関数を変更せずに追加機能を実現するために使用します.
👆🏻 関数の作成と戻り
decoratorがいったいどんな順番で行われているのか知りたいです.
👇🏻👇🏻 下図を見て、少し分かりました
宣言された関数を実行するためにdecoratorを貼り付けると、その関数が実行される前に
decoratorとして宣言された関数に移動し、パラメータとして受信した呼び出す関数を返します.
したがって、decoratorとして宣言された関数は、まずその内部で実行されます(trace-wrapper).
そしてdecoratorを宣言する関数を呼び出す!!(hello)
Decorator (2)
def buy_A_car(options):
print(f"다음 사양의 자동차를 구입하십니다:")
for option in options:
print(f"{option} : {options[option]}")
options = {"seat" : "가죽", "blackbox" : "최신"}
buy_A_car(options)
> 다음 사양의 자동차를 구입하십니다:
seat : 가죽
blackbox : 최신
👉🏻 パラメータとしてdictionaryを使用します!
しかし、parameter dictionaryのみを無条件に受け入れるという制約がある.
価格を払わなかったりStringを渡さなかったりすると、エラーが発生する可能性があります.
(何の値もない場合は、空の配列にも渡します!)
このとき使えるのはkeyword variablelength of arguments!
:数が不定で可変なキーワードarguments
:パラメータにアスタリスクを2つ追加**
**kwargs
def buy_A_car(**kwargs):
print(f"다음 사양의 자동차를 구입하십니다:")
-
for option in kwargs:
print(f"{option} : {kwargs[option]}")
このように宣言された関数は、次のように呼び出されます.buy_A_car(seat="가죽", blackbox="최신", tint="yes")
kwargsパラメータはdictionaryとして関数に渡される.{'seat': '가죽', 'blackbox': '최신', 'tint': 'yes'}
関数のbody内ではdictionaryのようにworksを使用できます.
キーワードを使用せずに値を順番に渡す方法は?
*args
これはいかなる形式と数量の論点を許すためです!
(parameterでは非常に柔軟な関数になります!)
👇🏻👇🏻 私が解読したコード
def sum_of_numbers(*args, **kwargs):
result = 0
if len(args) == 0:
return result
else:
for i in args:
result += i
return result
def what_is_my_full_name(**kwargs):
temp = dict(reversed(list((kwargs).items())))
print(temp)
name = ""
for arg in temp:
if "last_name" in temp or "first_name" in temp:
if "last_name" in temp and "first_name" in temp:
if arg == "last_name":
name += temp[arg]
if arg == "first_name":
name += " " + temp[arg]
elif "last_name" in temp and "first_name" not in temp:
if arg == "last_name":
name += temp[arg]
elif "last_name" not in temp and "first_name" in temp:
if arg == "first_name":
name += temp[arg]
else:
name = "Nobody"
if len(temp) == 0:
name = "Nobody"
return name
めちゃくちゃ+あちこちに詰まった和弦...ほほほ👇🏻👇🏻 別の分のコード
def sum_of_numbers(*args):
return sum(args)
def what_is_my_full_name(**kwargs):
if "first_name" in kwargs.keys():
if "last_name" in kwargs.keys():
return kwargs["last_name"] + " " + kwargs["first_name"]
else:
return kwargs["first_name"]
else:
if "last_name" in kwargs.keys():
return kwargs["last_name"]
else:
return "Nobody"
*kwargs,argsを活用して、もう一度勉強しましょう!以前にFunctions(2)の投稿で整理しました.
wecodeのコンセプトを見て整理してみましょう!
ネスト機能
👆🏻 decoratorに関する概念はありません.
少しも理解できないまま解けた自分が...(かわいそう)
nested function
:関数に関数が宣言されています.
:親の親関数でのみ呼び出すことができます.
:読み取り可能、接触による
どくせい
def print_all_elements(list_of_things):
## 중첩함수 선언
def print_each_element(things):
for thing in things:
print(thing)
if len(list_of_things) > 0:
print_each_element(list_of_things)
else:
print("There is nothing!")
関数に重複するコードがある場合は、重複関数として宣言して可読性を向上させる必要があります.each elements関数をall elements関数で宣言します.
必要に応じて、内部関数を繰り返すしかありません.
closure
def parent_function():
def child_function():
print("this is a child function")
child_function()
parent_function()
> "this is a child function"
親関数の変数、情報を使用するには、オーバーラップ関数を使用することもできます.:ファクトリアレイの実装時、関数またはオブジェクトの作成時
設定値を露出せずに変更できない場合に使用します!
def generate_power(base_number):
def nth_power(power):
return base_number ** power
return nth_power
calculate_power_of_two = generate_power(2)
calculate_power_of_two(7)
> 128
calculate_power_of_two(10)
> 1024
calculate_power_of_seven = generate_power(7)
calculate_power_of_seven(3)
> 343
calculate_power_of_seven(5)
> 16907
これは特定の数字の乗算を求める関数です.これはタイムリーに設定された求数乗の関数です!
def calculate_power_of_two(power):
return 2 ** power
calculate_power_of_two(7)
> 128
calculate_power_of_two(10)
> 1024
あるいはdef calculate_power(number, power):
return number ** power
calculate_power(2, 7)
> 128
2乗を表す関数を使用します.前述のようにネスト関数を使用する場合、
毎回入力するパラメータ数の積を求めることができます!
Decorator (1)
装飾講座
「デコレーション師」というコンセプトは本当にわかりにくく、その講座を聞いて助かりました.
装飾師とは、
この関数を実行する前に、decoratorロールの関数を最初に実行し、既存の関数を実行します.
:関数を変更せずに追加機能を実現するために使用します.
👆🏻 関数の作成と戻り
decoratorがいったいどんな順番で行われているのか知りたいです.
👇🏻👇🏻 下図を見て、少し分かりました
宣言された関数を実行するためにdecoratorを貼り付けると、その関数が実行される前に
decoratorとして宣言された関数に移動し、パラメータとして受信した呼び出す関数を返します.
したがって、decoratorとして宣言された関数は、まずその内部で実行されます(trace-wrapper).
そしてdecoratorを宣言する関数を呼び出す!!(hello)
Decorator (2)
パラメータと戻り値を扱うレコーダ
Reference
この問題について([TIL] Python - Function (2)), 我々は、より多くの情報をここで見つけました
https://velog.io/@haileeyu21/TIL-중첩-함수와-Decorator
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
Reference
この問題について([TIL] Python - Function (2)), 我々は、より多くの情報をここで見つけました https://velog.io/@haileeyu21/TIL-중첩-함수와-Decoratorテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol