As you see, ifinner is a string, so if I just write after if, always will be true. What can i do, to concert it to source code?
x=2
ifinner = "x==3"
if ifinner:
print("Yeah")
else:
print("It works!")
You can use eval() function to evaluate Python source code.
Quoting the documentation:
eval(expression, globals=None, locals=None)
The arguments are a string and optional globals and locals. If provided, globals must be a dictionary. If provided, locals can be any mapping object.
eval on any string that you didn't create yourself (or from a trusted source)!Try this:
exec ("%s == 3" % x)
For detailed info, read the documentation of eval and exec in python 2.x/3.x. A similar question was asked previously.Here's the link
I think eval does not work with strings like this
str_ = "import matplotlib"
in that case you might have to open a separate file, write the string and then execute it.
exec for this string. For example try the following exec( "import matplotlib.pyplot as mp" ); mp.plot([1,2,3],[-1,0,1]); mp.show() no error. But you are right that eval is not suitable for this string.
ifinner = x == 3, which works in your example?