2017-03-22 23 views
1

私fabfile.pyには、次のものが含まれています戻り値は

# simple function - no arguments and no returns 
def hello(): 
    print "Hello World!" 

# function with default argument 
def goodbye(name='Anonymous'): 
    print "Buh-bye world!", name 

# function that does nothing 
def nothingHere(): 
    pass 

# function that take arguments and returns something 
def sum(x=0, y=0): 
    sum=x+y 
    return sum 

ファブリックに新しいです。ここでは、わかりやすくするために、ファブコマンドとして実行した場合、sum()関数から戻り値を収集する方法があるかどうかを理解したいと思います。

FAB合計:X = 10、yは20

を=それでは、どのように私は/参照ください上記のコマンドの出力を収集?

+0

シェルではどこで見たい/キャプチャしますか?あなたが 'sum'値を出力した場合は、それを返すのではなく、その出力をシェルが捕捉できます。正しく操縦するために、あなたがやろうとしていることをもう少し知ることは役に立ちます。 – YellowShark

+0

私はシェルでそれを出すことは単にそれを印刷することを意味すると理解しています。しかし、関数をpythonスクリプトの中の別の関数の中から呼び出させたいとしましょう。そして今、私は合計を呼び出し関数に返すことを望むでしょう。私ができれば、どうすればそれを達成できますか? – qre0ct

答えて

1

ファブリックの主な使用目的を理解することは重要です。リモートサーバでタスクを実行することです。戻り値は、この事実を中心にしています。

ここファブリックタスクからの戻り値を示しているスクリプトの簡易バージョンです:

from fabric.api import execute 

# function that take arguments and returns something 
def sum(x=0, y=0): 
    sum = x + y 
    return sum 

# using execute to simulate the `fab <command>` command-line usage 
result = execute(sum, x=5, y=10) 
print(result) 

結果は、タスクを実行するホストをキーと辞書、次のとおりです。

{'<local-only>': 15} 

場合には、このタスクをいくつかのリモートサーバーで実行したとしたら、次のようになります。

result = execute(sum, x=5, y=10, hosts=['host-1', 'host-2']) 
print(result) 
{'host-1': 15, 'host-2': 15} 

したがって、このsum()関数を互いに呼び出す可能性があるより幅広い関数の一部として使用しようとする場合は、resultの値から適切な/望ましいキーにアクセスするだけで済みます。