Pythonでは何* argsのものは何ですか?


クラスの関数やメソッドと呼ばれています.

焦点がついている*values 写真の一部.
ほとんどの回、我々はちょうどものを使用し、私たちの方法を行く.
このポストでは、我々はそのアスタリスクのものの目的を見るでしょう*args ) そしてどのように退屈を排除し、我々のPythonの関数とメソッドの緊張を減らすために使用する.

問題
すべて覚えてIsaac ? さて、彼はここで問題を抱えている.
アイザックは1947年に採用されているGenghis Khan , 一つgreatest men the world will ever see , 彼の敵の命を終えるプロセスを自動化する.
これはアイザックの2番目の深刻な仕事であり、彼はモンゴル帝国の皇帝を感動させる準備ができているので、彼はdispatch_foe 人々の名前のリストを受け入れて、それから必要であることをすることによって汚染を減らす機能.
彼はそのような働きをしている
from GenghisKhan.actions import kill

def dispatch_foe(name: str) -> bool:
    success: bool = kill(name) # ends the life

    return success

問題
この関数をたくさんの人に呼び出すと、以下のようなことが起こります.
for name in list_of_names:
    dispatch_foe(name)
これは、兵士のための非常に面倒なことができ、それらのための汚い仕事だけです.それは本当に多くの自動化されません.

小さな解決策
さて、Isaacは、彼の関数を名前のリストを受け入れるように決め、残りを行います.
from typing import List
from GenghisKhan.actions import kill

def dispatch_foe(names: List) -> bool:
    success: bool = True
    for name in names:
        success = success and kill(name) # tells us if and only if everyone died

    return success
そして、我々は呼び出すことができますdispatch_foe 以下のように:
# people who we both share mutual hate
enemies = ["Erons", "Victor Aiyeola", "Davidemi"]

# test to confirm that they were successfully dispatched
assert True is dispatch_foe(enemies)

実際の解決策
アイザックの解決策は、それは愚かです.なぜ?私たちがそれを受け入れるなら、私は決してあなたに教えることができないでしょう*args です.それは、あなたがあなたの寿命の終わりまで完全な無知で歩くことを意味します.
これは危険な効果がある.イベントでは、誰かの生活だけで保存することができます*args , アイザックの答えを拒絶することの拒絶は、世界飢餓を解決するための鍵となる魂であり、したがって、何百万という数十億の死につながるその人の終わりを綴ります.そういうわけで、我々は常にどんな問題も解決するためにIsaacの最初の解決を拒絶しなければなりません.
実は.lol
ほとんどの場合、既定値を指定せずに変数の引数を受け入れるようにします.*args それを行うには美しく、パイナップルな方法です.
だからリストやタプルや辞書の代わりに(ああ、これにトリックがある、私はいつか上の記事を書くよ)、またはセットや配列やベクトルやリンクリストまたは二重リンクリストまたは三重リンクリストまたは四重リンクリストまたは…….

実際の解決策(本物のもの、添付のない)
それで、兵士が彼らをリストに詰めることなく、できるだけ多くの敵を通過させることができるように、我々はアイザックの解決を再処理します:
from typing import Sequence
from GenghisKhan.actions import kill

def dispatch_foe(*names: Sequence[str]) -> bool:
    success: bool = True
    for name in names:
        success = success and kill(name) # tells us if and only if everyone died

    return success
そして、以下のようにいろいろな機能を呼び出します.
# 'do' Erons alone
assert True is dispatch_foe("Erons")

# 'do' Erons and someone else
assert True is dispatch_foe("Erons", "Someone else")

# 'do' people who hate me
assert True is dispatch_foe("Erons", "Davidemi", "Victor Aiyeola")

終わり
そして、そこでは、わずかな人間の1つは、アイザックの問題にエレガントなソリューションです.ジンギスカンは敵の問題を解決するためにiSacのソリューションを使用しました.残念ながら、アイザックの名前は歴史の本にありません.一部の組織といくつかの成功した製品がエンジニアに十分な賞賛を与えないので.
'*'文字がPEP448 通常、iterable unpack演算子と呼ばれます.
知っている、その使用方法

 and

 ```**kwargs```

 (we'll learn this later) can make debugging quite evil. So you'd want to watch your back whilst using them.

## Disclaimer
There is no `GenghisKhan` module implemented anywhere in the Python standard library or Pypi index or anywhere. No murders were committed in the course of this code and my *enemies* are excellent engineers with happy jobs (I don't have one, so I don't like them at all).

Also, there is no proof that Genghis Khan actually asked Isaac to write this function. I must have written this article while dreaming.

## The actual end
May the force of the snaky language dwell richly in your soul and may you find what is that good, pleasing and perfect will of The One Above All.