2024-09-30 14:17:38 发布
网友
我有两个功能,如下所示:
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”一起用于对类实例的不同属性进行排序。在
这些是从程序中的其他函数和方法中使用的。在
我是否可以让它们在任何地方都可见,而不必将它们传递给使用它们的每个对象?在
谢谢
最好的方法(获得您所询问的可见性)是将这个def语句放在一个模块中(例如拟合.py),从需要访问此模块中定义的项的任何其他模块中,import fit,并根据需要在任何这些模块中使用fit.fitnesscompare。在
def
import fit
fit.fitnesscompare
你的要求和你真正需要的,可能实际上是不同的…:
正如我在今天早些时候的另一篇文章中所解释的,自定义比较函数是在Python中自定义排序的最佳方法(这就是为什么在python3中它们甚至不再被允许):相反,自定义键提取函数将为您提供更好的服务(经得起未来考验,更通用,更快)。一、 不是打电话,而是说
somelist.sort(cmp=fit.fitnesscompare)
呼叫
在哪里
def fitnessextract(x): return x.fitness
或者说,速度真的很快
import operator somelist.sort(key=operator.attrgetter('fitness'))
用def定义函数可以使该函数在您定义它的任何范围内都可用。在模块级别,使用def将使该函数对该模块内的任何其他函数可用。在
你能举个例子说明什么东西对你有用吗?您发布的代码似乎与您的实际问题无关。在
最好的方法(获得您所询问的可见性)是将这个
def
语句放在一个模块中(例如拟合.py),从需要访问此模块中定义的项的任何其他模块中,import fit
,并根据需要在任何这些模块中使用fit.fitnesscompare
。在你的要求和你真正需要的,可能实际上是不同的…:
正如我在今天早些时候的另一篇文章中所解释的,自定义比较函数是在Python中自定义排序的最佳方法(这就是为什么在python3中它们甚至不再被允许):相反,自定义键提取函数将为您提供更好的服务(经得起未来考验,更通用,更快)。一、 不是打电话,而是说
呼叫
^{pr2}$在哪里
或者说,速度真的很快
用
def
定义函数可以使该函数在您定义它的任何范围内都可用。在模块级别,使用def
将使该函数对该模块内的任何其他函数可用。在你能举个例子说明什么东西对你有用吗?您发布的代码似乎与您的实际问题无关。在
相关问题 更多 >
编程相关推荐