読んだ後、関数の引数のリストを渡すために2つの異なる方法で苦労していました。私はいくつかの適応症を読んだ。それは私がこれまでに考え出したものです:関数への引数を渡して処理するための最善のアプローチ
実際のコード:
ファイルcaller.py:
import worker
worker.version_check(iserver,login,password,proxyUser,proxyPass,
proxyServer,packageInfo)
worker.version_get(iserver,login,password,proxyUser,proxyPass,
proxyServer,packageInfo)
worker.version_send(iserver,login,password,proxyUser,proxyPass,
proxyServer,packageInfo)
ファイル:worker.py:
def version_check(iserver,login,password,proxyUser,proxyPass,proxyServer,service):
#code and more code
def version_get(iserver,login,password,proxyUser,proxyPass,proxyServer,service):
#code and more code
def version_send(iserver,login,password,proxyUser,proxyPass,proxyServer,service):
#code and more code
そして今、私が持っている:
ファイルcaller.py:
import worker
args = (env, family, host, password, prefix, proxyServer,
proxyUser, proxyPass, option, jokerVar
)
worker.version_check(*args)
worker.version_get(*args)
worker.version_send(*args)
ファイル:worker.py:
古いアプローチ(実際のコード)を使用してdef version_check(*args):
env = args[0]
family = args[1]
host = args[2]
password = args[3]
prefix = args[4]
proxyServer = args[5]
proxyUser = args[6]
proxyPass = args[7]
option = args[8]
jokerVar = args[9]
#code and more code
def version_get((*args):
env = args[0]
family = args[1]
host = args[2]
password = args[3]
prefix = args[4]
proxyServer = args[5]
proxyUser = args[6]
proxyPass = args[7]
option = args[8]
jokerVar = args[9]
#code and more code
def version_send(*args):
env = args[0]
family = args[1]
host = args[2]
password = args[3]
prefix = args[4]
proxyServer = args[5]
proxyUser = args[6]
proxyPass = args[7]
option = args[8]
jokerVar = args[9]
#code and more code
私はあなたがworker.py上で見ることができるように(1行だけの関数を呼び出すために、より「やさしい」であると信じて)。しかし、新しいアプローチを使用すると、各関数に対して同じ変数をすべて定義する必要があるため、コードがより広範囲になると思います。しかしこれはベストプラクティスですか?私はまだ遅いカーブでPythonを学んでいるので、コードの間違いをおかしなさい。
重要なことは、ほとんどの変数はデータベースから取得されるため、スタティックではありません。
は一般的に、あなたはいくつかのより多くのあなたのデザインを考える必要があります。オブジェクトを渡すことは、その多くの議論よりも良いでしょうか? –
@MartijnPieters私に例を送ることは可能ですか?私はそれをs.oでも見つけようとします。 Pythonのドキュメント。 –
引数の集合は何を表していますか?それは名前を付けることができますか?そうであれば、その情報を保持する名前付きタプルまたはカスタムクラスにすると、x個の独立した引数の代わりに1つのオブジェクトを渡します。 –