Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/330.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 - Fatal编程技术网

Python会自动检测到函数从未被调用,而是被定义了吗?

Python会自动检测到函数从未被调用,而是被定义了吗?,python,Python,真假 如果定义了一个函数但从未调用过,那么Python会自动检测该函数并发出警告,如果没有,则发出警告。Python无法检测到这一点。如果要检测在运行时是否调用了哪些函数,可以在程序中使用global set。在每个函数中添加要设置的函数名。稍后,您可以打印设置的内容,并检查是否调用了该函数。False。忽略这样做的困难和开销,没有理由认为它会有用 在模块(即Python文件)中定义但未在该模块的其他地方调用的函数可能会从其他模块调用,因此不值得警告 如果Python分析在程序运行过程中运行的所

真假


如果定义了一个函数但从未调用过,那么Python会自动检测该函数并发出警告,如果没有,则发出警告。Python无法检测到这一点。如果要检测在运行时是否调用了哪些函数,可以在程序中使用global set。在每个函数中添加要设置的函数名。稍后,您可以打印设置的内容,并检查是否调用了该函数。

False。忽略这样做的困难和开销,没有理由认为它会有用

在模块(即Python文件)中定义但未在该模块的其他地方调用的函数可能会从其他模块调用,因此不值得警告

如果Python分析在程序运行过程中运行的所有模块,并打印关于未调用函数的警告,则可能是由于在该特定运行中的输入而未调用函数,例如,可能在计算器程序中有一个“乘法”函数,但用户只要求对一些数字求和


如果Python要分析组成一个程序的所有模块,并记录和打印一条关于不可能调用的函数的警告(这是不可能的,但请留在这里),那么它将警告打算在其他程序中使用的函数。例如,如果您有两个计算器程序,一个是简单的,一个是高级的,可能您有一个带有实用函数的中央
calc.py
,然后高级函数如
exp
log
在作为简单程序的一部分使用时可能无法调用,但是这不应该引起警告,因为高级程序需要它们。

其中一个问题是Python中的函数是一流对象。所以他们的名字可以重新分配。例如:

def myfunc():
     pass

a = myfunc
myfunc = 42

a() 
def myfunc():       #  <<< This code is never called
    pass

def myfunc():
    pass

myfunc()
我们还有闭包,其中一个函数由另一个函数返回,而原始名称超出范围

不幸的是,定义与现有函数同名的函数也是完全合法的。例如:

def myfunc():
     pass

a = myfunc
myfunc = 42

a() 
def myfunc():       #  <<< This code is never called
    pass

def myfunc():
    pass

myfunc()
给出:

{'myfunc1 (4339565296)': 2, 'myfunc1 (4339565704)': 1}
但这只给出了已调用的函数,而不是尚未调用的函数


那么接下来该怎么办呢?我希望您能看到,鉴于python的动态特性,这项任务相当困难。但是我希望我上面展示的装饰程序至少可以让您诊断代码的使用方式。

您尝试过吗?:)Python本身不会检测到这一点。一些IDE可以检测未使用的代码。