python中min / max函数中参数个数的错误

时间:2016-11-21 05:25:01

标签: python error-handling max min

我在Python中运行一个非常简单的示例,但是我遇到了一些错误。 当我运行这段代码时:

lst = [1, 3, 4, 6, 7]
maxLSt = max(lst)
print(maxLSt)

我收到此错误:

  maxLSt = max(lst)
  TypeError: max() takes exactly 2 arguments (1 given) 

这个问题的原因是什么?

3 个答案:

答案 0 :(得分:1)

当你做了

from audioop import max

您明确告诉Python,名称max是指max中的audioop。你不可能有一个名称引用两个不同的东西,所以内置的max函数变成了"蒙面"或者"阴影"来自audioop的那个。屏蔽的函数对象仍然可以通过其全名__builtins__.max访问,但我们通常避免使用内置对象的全名,因为它们只是使代码看起来混乱,但它们在紧急情况下很方便,和其他特殊情况。

避免名称冲突的方法是使用最简单的import语句形式:

import audioop

然后您可以使用完全限定名称max访问它的audioop.max函数。如果您想经常使用模块中的名称而不想输入其全名,则在导入模块时可以给模块一个简短的名称,例如:

import audioop as au

然后您使用max引用它的au.max功能。

我建议你阅读官方Python教程中关于Python Scopes and Namespaces的部分。事实上,阅读整个教程是一个好主意。它不针对那些对编程完全陌生的人,它假设你已经拥有一些编码经验(最好是在C / C ++ / Java系列中),所以你不应该觉得它太简单了。 :)

我还建议你阅读这篇文章:Facts and myths about Python names and values,由SO资深人士Ned Batchelder撰写。这是对Python数据模型的一个很好的解释,它与你在Java中习惯的工作方式完全不同。可以在Other languages have "variables", Python has "names"找到这些基本想法的简短摘要,以及漂亮的图表。

答案 1 :(得分:0)

您的代码运行正常。这是整个计划还是大计划的一部分。如果是这样,请提供整个代码。 如果它是整个程序,您应该尝试Restarting your Kernel.

答案 2 :(得分:0)

这是我刚刚在互联网上找到的卸载导入的东西,希望这样做就行了

import gc, sys

print len(gc.get_objects()) 

# Attempt to unload the module

import audioop
del sys.modules["audioop"]
audioop = None

gc.collect()
print len(gc.get_objects())