Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/300.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 我的问题是关于';评估';包含在导入模块的函数中时的函数_Python_Module_Eval_Python Import - Fatal编程技术网

Python 我的问题是关于';评估';包含在导入模块的函数中时的函数

Python 我的问题是关于';评估';包含在导入模块的函数中时的函数,python,module,eval,python-import,Python,Module,Eval,Python Import,我创建了一个简单的函数,通过在eval()函数中传递变量名,在一些工程脚本中报告变量的当前值。该参数作为字符串传递,然后eval()读取该参数并用一些附加信息报告该值。该函数在单个脚本中正常工作。但是,当我从一个模块导入相同的函数时,我返回一个错误,表示变量has未定义 我尝试将其设置为全局变量,但仍然遇到相同的问题 def report(name,units = '-',comment ='NC'): if type(eval(name)) == str:

我创建了一个简单的函数,通过在eval()函数中传递变量名,在一些工程脚本中报告变量的当前值。该参数作为字符串传递,然后eval()读取该参数并用一些附加信息报告该值。该函数在单个脚本中正常工作。但是,当我从一个模块导入相同的函数时,我返回一个错误,表示变量has未定义

我尝试将其设置为全局变量,但仍然遇到相同的问题

def report(name,units = '-',comment ='NC'):   
        if type(eval(name)) == str:
            print('{0:<12}= {1:^10}  {2:^5} {3}'.format(name,eval(name),units,comment))
        else:
            print('{0:<12}= {1:8.3f}  {2:^5} {3}'.format(name,eval(name),units,comment))
def报告(名称、单位='-',注释='NC'):
如果类型(eval(name))==str:

print(“{0:TL;DR不使用
eval
如何在
reporting.py
中调用
report
?是否应该调用
report('Iyy')”)
?不,我希望函数计算Iyy的值。在脚本中使用它时,我只使用
report('Iyy'))
而且它很有效。@DeepSpace有什么建议要寻找吗?你可以通过在
报告的开头添加
name=“{0}”.format(name)
来调整@rassar的建议。一个更安全的解决方案是用
vars()[name]替换
eval(name)
,假设您只想查找某个全局变量的值,而不是执行任意代码。
>>>from reporting import*
>>> from shapes import*
>>> Iyy = rec_Iyy(40,60)
>>> report('Iyy')
Traceback (most recent call last):
  File "<pyshell>", line 1, in <module>
  File "C:\Users\vousvoukisi\OneDrive\11.Python\03_myScripts\design_mod\reporting.py", line 8, in report
    if type(eval(name)) == str:
  File "<string>", line 1, in <module>
NameError: name 'Iyy' is not defined 

## while i would expect the outcome to be :


>>> %Run reporting.py
Iyy         = 720000.000    -   NC