2016-04-07 9 views
0

私はPythonの初心者ですので、これは簡単すぎるかもしれません! は、私は以下のように機能を持っていると想像:Pythonで置換を行う方法は?

def f(x,y): 
    return x**2 + 3*y 

その後、私はPythonでこれを行う必要がありますどのように(p**2+2)xを代用したいです!

+1

'(p ** 2 + 2)'に 'p'とは何ですか? –

答えて

0

ただp**2 + 2に渡します。このようなあなたの関数を呼び出します。

f(p**2 + 2, y) 

これはx = p**2 + 2f(x,y)を評価し、あなたは完了です。

あなたが持っている現在のコードを書き直すことなく、純粋なPythonで知っている直接式置換を行う方法はありません。

シンボリックな操作をすることに興味があれば

SymPyを見てみましょう:

from sympy import * 
x, y, p = symbols("x y p") 
expression = x**2 + 3*y 
expression.subs(x, p**2 + 2) # prints out substituted equation 
1

あなたはデコレータでこれを行うことができます。あなたに関心があるかもしれません。コードを変更せずにf(x, y)の動作を変更することができます。

def change_x(func): 
    def intern(x, y): 
     return func(x**2+2, y) 
    return intern 

@change_x 
def f(x, y): 
    return x**2 + 3*y 

f(x, y)戻りますがf(x, y)

とそれを呼び出すf(x**2 + 2, y)これはデコレータは何ができるかを学ぶの外おそらくほとんど関心を持っている不自然な例を少し。この場合は使用しないことをお勧めします。

関連する問題