from sympy import*
def z(l):
print(l.subs(x,1))
def f():
x = symbols('x')
l = x*x
z(l)
f()
运行后,在f()调用z()时x未定义。但是改为如下就能成功:
from sympy import*
def z(l):
print(l.subs(x,1))
if __name__=='__main__':
x = symbols('x')
l = x*x
z(l)
请问对于第一个代码如何修改,能通过调用f()函数得到结果
python执行顺序是从上到下,你的第一种写法
def z(l):
print(l.subs(x,1))
其中 x 未定义,估计会报错,但是如果有 if __name__=='__main__':
;那么文件执行顺序会从这边定义的先开始执行,当执行到 x = symbols('x') ,x 就有值了,所以在执行 z 函数的时候就不会报错,如果对上面函数修改也是可以的,就是把x声明成全局即可
from sympy import *
def z(l):
print(l.subs(x,1))
def f():
global x
x = symbols('x')
l = x * x
z(l)
f()