To confirm, if you mean that it is free from any Symbol (free or bound) 
then `not expr.has(Symbol)` will be best. But if you consider `Integral(x, 
(x, 1, 2))` as a number then you should use `is_number` or `free_symbols`, 
with `expr.is_number` failing sooner than `not expr.free_symbols` if the 
expression has a free symbol.  (So if you suspect the expression has free 
symbols then use `is_number`, else `free_symbols`).

`f.is_number != (not bool(f.free_symbols))` should be an invariant for 
Expr, but SymPy also deals with Booleans, so `S.true.is_number` is False 
and `S.true.free_symbols` is empty.

/c

On Sunday, September 12, 2021 at 11:56:23 PM UTC-5 [email protected] 
wrote:

> Are there any cases when f.is_number != (not bool(f.free_symbols))?
>
> If I have an arbitrary expression, what is the correct way to check 
> whether it has variables?
>
> Thank you.
>

-- 
You received this message because you are subscribed to the Google Groups 
"sympy" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/sympy/9af46205-ce22-494c-a604-c27b6682fa96n%40googlegroups.com.

Reply via email to