在这篇文章中,我们将学习如何解决 "需要0个位置参数,但给了1个 "的错误。让我们开始吧!
为什么会出现 "需要0个位置参数但给了1个 "的错误?
让我们定义下面的示例函数 "add_numbers",它接受两个参数num_1和num_2。
代码示例 1:
def add_numbers(num_1, num_2):
sum = num_1 + num_2
print('The sum of two numbers is: ', sum)
现在当我们需要将两个数字相加时,我们只需要将这些数字作为参数传递给函数。请看下面。
输出
>>> add_numbers(33, 23) # calling the function first time
>>> The sum of two numbers is: 56
>>> add_numbers(45, 45) # calling the function second time
>>> The sum of two numbers is: 90
因此,从输出结果来看,我们可以看到,多次调用该函数要比执行原始加法容易得多。让我们执行另一项任务,即两个数字相乘。
代码示例2
def multiply(num_1, num_2):
product= num_1 * num_2
print('The product of two numbers is: ', product)
输出
>>> multiply(4, 100) # calling the function first time
>>> The product of two numbers is: 400
>>> multiply(40, 60) # calling the function second time
>>> The product of two numbers is: 2400
函数的类型
有两种类型的函数:
- 参数化:要放在括号内的值。一般用于高端应用。
- 非参数化:空括号。一般用于基本流程。
Python中的函数类型
当程序员在处理一个特定函数的参数时,他们需要记住一些事情:
- 该函数拥有的参数数量。
- 每个参数应该做什么。
当程序员没有考虑这两点时,Python解释器就会产生错误,其中之一就是:
Traceback (most recent call last):
File "c:\Users\Lenovo\Desktop\sample.py", line 8, in <module>
function(parameter)
TypeError: function() takes 0 positional arguments but 1 was given
这是Python中最常见的TypeError。当指定的匹配数据类型在那段特定的代码中没有找到时,它就会发生。
例子:取0个位置参数,但给了1个。
比方说,我们定义了一个函数来除以两个数字。这是一个非参数化的函数,调用后需要输入。
例子 1:
def divide():
num_1 = int(input('enter num_1: ' )) # taking input for num_1
num_2 = int(input('enter num_2: ' )) # taking input for num_2
div = num1/num2
print('The division is: ', div)
divide(3)
输出:
Traceback (most recent call last):
File "c:\Users\Lenovo\Desktop\sample.py", line 8, in <module>
divide(3)
TypeError: divide() takes 0 positional arguments but 1 was given
在上面的例子中,divide()函数需要两个参数。这两个参数都是强制性的,而且都不是位置性的。这就是为什么,该函数抛出一个错误 "需要0个位置参数,但给出了1个"
当我们用一个参数调用divide()时,解释器会抛出这个错误。
例2:
def add_numbers():
num_1 = int(input('Enter number 1: '))
num_2 = int(input('Enter number 2: '))
sum = num_1 + num_2
print('The sum of two numbers is: ', sum)
add_numbers(45, 2) # calling the function in python shell
输出
Traceback (most recent call last):
File "c:\Users\Lenovo\Desktop\sample.py", line 7, in <module>
add_numbers(45, 2)
TypeError: add_numbers() takes 0 positional arguments but 2 were given
我们知道解释器是逐行读取代码的,它扫描每一行的代码并抛出错误。我们得到了同样的错误,因为我们给了两个位置参数,尽管这个函数不接受任何东西。
如何修复 "接受'0'个位置参数,但给了'1'个 "的错误?
该错误将显示发生错误的函数名称。要解决这个错误:
- 检查该函数接受什么类型的参数
- 找到该函数的所有调用,确定是否有任何函数调用是错误的
- 通过简单地改变有问题的函数调用来解决这个错误。
结论
关于"接受0个位置参数但给了1个参数 "的话题到此为止。这个概念是直截了当的。我希望你能够解决你代码中的错误。如果你有任何问题,请给我们留言,我们将帮助你解决。