Python:如何使函数在整个程序中可见

2024-09-30 14:17:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个功能,如下所示:

def fitnesscompare(x, y):    
    if x.fitness>y.fitness:
        return 1
    elif x.fitness==y.fitness:
        return 0
    else:  #x.fitness<y.fitness
        return -1

与“sort”一起用于对类实例的不同属性进行排序。在

这些是从程序中的其他函数和方法中使用的。在

我是否可以让它们在任何地方都可见,而不必将它们传递给使用它们的每个对象?在

谢谢


Tags: 实例方法函数程序功能returnif属性
2条回答

最好的方法(获得您所询问的可见性)是将这个def语句放在一个模块中(例如拟合.py),从需要访问此模块中定义的项的任何其他模块中,import fit,并根据需要在任何这些模块中使用fit.fitnesscompare。在

你的要求和你真正需要的,可能实际上是不同的…:

正如我在今天早些时候的另一篇文章中所解释的,自定义比较函数是在Python中自定义排序的最佳方法(这就是为什么在python3中它们甚至不再被允许):相反,自定义键提取函数将为您提供更好的服务(经得起未来考验,更通用,更快)。一、 不是打电话,而是说

somelist.sort(cmp=fit.fitnesscompare)

呼叫

^{pr2}$

在哪里

def fitnessextract(x):
   return x.fitness

或者说,速度真的很快

import operator
somelist.sort(key=operator.attrgetter('fitness'))

def定义函数可以使该函数在您定义它的任何范围内都可用。在模块级别,使用def将使该函数对该模块内的任何其他函数可用。在

你能举个例子说明什么东西对你有用吗?您发布的代码似乎与您的实际问题无关。在

相关问题 更多 >