如何解决通过刚性python关键字调用函数
为什么列表对象不能在函数中调用?
代码:
def unique_list(list1):
sets=set(list1)
u_list=(list(sets))
print("old list",list1)
print('unique list',u_list)
list1=[1,1,2,3,4,5]
unique_list(list1)
当我这样做时..我得到了确切的输出[1,5]...
但
如果我使用list代替list1或其他任何类似以下代码的名称:
def unique_list(list):
sets=set(list)
u_list=(list(sets))
print("old list",list)``
print('unique list',u_list)
list=[1,5]
unique_list(list)
python引发错误:
TypeError: 'list' object is not callable
是否因为这个原因而不能将刚性关键字用作变量名?或其他原因??
解决方法
这里有您想要做的工作代码
def unique_list(list1):
print("old list",list1)
print('unique list',(list(set(list1))))
list1=[1,1,2,3,4,5]
unique_list(list1)
这是您的代码无法正常工作的原因
让我们看看定义您的函数的代码
def unique_list(list):
#code
list
是一个类名,list()
是python固有的函数;通过将其设为参数和/或变量,您可以覆盖它!
因此,当您致电list(set(list))
时,它基本上是这样说的:parameter(set(parameter))
显然,参数不能同时是一个函数和一个列表;因此没有任何可行的方案。
我建议像这样使用约定名称,如果您不确定如何调用列表:
lst = []
x = []
l = []
您仅需通过type-hinting
def foo(s: str,l: list) -> list:
#do code
return l + list(s)
总而言之……除非您实际上试图覆盖它们,否则在python中使用任何内置函数/类名作为变量/函数是一种可怕的做法。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。