2016-04-07 16 views
0

Python'da yeniyim, bu çok kolay gelebilir! Ben aşağıda bir işlevi olduğunu varsayalım:Python'da ikameler nasıl yapılır?

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

sonra Python yapmalı nasıl (p**2+2) ile x yerine istiyorsun ?!

+1

'p' nedir (p ** 2 + 2)'? –

cevap

0

Sadece işlevinizep**2 + 2 kodunu iletin.

f(p**2 + 2, y) 

Bu x = p**2 + 2 ile f(x,y) değerlendirecek ve bitirdiniz: Buna benzer işlevi çağırın.

Sahip olduğunuz geçerli kodu yeniden yazmadan, salt Python'da bildiğim formül değiştirmeyi doğrudan yapmanın bir yolu yoktur.

Eğer sembolik manipülasyon yapmak isteyen iseniz

, SymPy bakmak:

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

Bir dekoratör ile yapabilirsiniz; ilginizi çekebilir ya da olmayabilir. Kodu değiştirmeden f(x, y) davranışını değiştirmenize izin verir.

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 

Şimdi f(x, y) döner sen f(x, y)

ile diyoruz f(x**2 + 2, y) Bu dekoratörler neler yapabileceğini öğrenme dışında muhtemelen az ilgi vardır bir yapmacık örnek biraz; Bu durumda kullanmayı önermem.