除非我通过In [1]: import sympy as sy
In [2]: class f(sy.Function):
...: def _eval_evalf(self,prec):
...: print "evalf"
...: return sy.S(1)
...:
In [3]: f(1)
Out[3]: f(1)
In [4]: f(1)+1
Out[4]: evalf
1 + f(1)
明确要求,否则我想创建一个未评估的函数。我试过这个(按照http://docs.sympy.org/latest/modules/functions/index.html中的例子)
_eval_evalf()
可以看出,函数远离[3]中的_eval_evalf()
,但它在[4]中经过了 @classmethod
def _should_evalf(cls, arg):
return -1
,超越了我首先定义符号函数的目的。我也试过添加这个
_eval_evalf()
但它没有解决问题。
是否有一种简单的方法(我不熟悉类)来阻止函数f通过public static boolean isAsciiPrintable(String str) {
if (str == null) {
return false;
}
int sz = str.length();
for (int i = 0; i < sz; i++) {
if (isAsciiPrintable(str.charAt(i)) == false) {
return false;
}
}
return true;
}
public static boolean isAsciiPrintable(char ch) {
return ch >= 32 && ch < 127;
}
}
?
答案 0 :(得分:0)
您的echo($result)
会阻止该功能自动评估。您_should_evalf
的结果是1 + f(1)
,而不是1 + f(1)
。
2
。您可以引发异常或使用_eval_evalf
查看调用import traceback; traceback.print_stack()
的位置。