Python 函数中的input()引发异常->&引用;input()接受0个位置参数,但给出了1;

Python 函数中的input()引发异常->&引用;input()接受0个位置参数,但给出了1;,python,Python,input()在没有函数的情况下定义时工作正常,但在函数中定义并调用时,它会引发异常。您不应该将函数命名为input(),因为它已经是一个内部函数了!您的函数应该被调用为my\u user\u input()或类似的函数 通过调用自己的函数input(),可以隐藏并“覆盖”现有的内置函数input()-function。这样,您将无法再在脚本中访问它的功能。您不应该将函数命名为input(),因为它已经是一个内部函数了!您的函数应该被调用为my\u user\u input()或类似的函数 通过

input()
在没有函数的情况下定义时工作正常,但在函数中定义并调用时,它会引发异常。

您不应该将函数命名为
input()
,因为它已经是一个内部函数了!您的函数应该被调用为
my\u user\u input()
或类似的函数


通过调用自己的函数
input()
,可以隐藏并“覆盖”现有的内置函数
input()
-function。这样,您将无法再在脚本中访问它的功能。

您不应该将函数命名为
input()
,因为它已经是一个内部函数了!您的函数应该被调用为
my\u user\u input()
或类似的函数


通过调用自己的函数
input()
,可以隐藏并“覆盖”现有的内置函数
input()
-function。这样,您将无法再在脚本中访问它的功能。

将您的输入函数重命名为其他函数,它就会工作,不要在内部隐藏将您的输入函数命名为其他函数,它就会工作,不要在内部隐藏我同意函数名是问题的根源,但我觉得应该澄清的是,“你不能命名你的函数input()”的意思是“你不能这样做,并期望能够以相同的名称访问内置函数”,而不是“你不允许这样做,句号”。掩盖内置函数名是合法的,绝大多数情况下这不是一个好主意。我将把它纳入我的答案中!我想通过自己定义
input()
,我会覆盖buildin输入函数?这取决于“覆盖”的含义。如果您定义了自己的
input()
,那么原始的
input()
函数仍然存在于内存中。只是再也不能用那个名字访问了。它仍然是可恢复的(例如,稍后使用
input=\uuuuuu builtins\uuuuu.input
重新分配它,或者简单地离开分配发生的范围),但更容易的是不使用该名称开始。好的,明白了!以前从未想过这个概念,但我想我在编辑后的答案中正确地阐明了它。谢谢!但我仍然得到一个错误,NameError(“未定义名称”number“,)堆栈跟踪:>文件“f:\projects\pythonapplication\pythonapplication1\pythonapplication1.py”,第21行,在>checkValidity(number)Loaded'main'中,程序“python.exe”已退出,代码为-1(0xffffffff),checkValidity()无法访问输入函数中的数字变量。我同意函数名是问题的根源,但我认为应该澄清的是,“你不能命名你的函数输入()”意味着“你不能这样做,并且希望能够以相同的名称访问内置函数”,而不是“不允许这样做,句号”。掩盖内置函数名是合法的,绝大多数情况下这不是一个好主意。我将把它包含在我的答案中!我想通过自己定义
input()
,我会覆盖内置输入函数?这取决于你所说的“覆盖”是什么意思“。如果您定义自己的
input()
,则原始的
input()
函数仍存在于内存中。只是再也不能用那个名字访问了。它仍然是可恢复的(例如,稍后使用
input=\uuuuuu builtins\uuuuu.input
重新分配它,或者简单地离开分配发生的范围),但更容易的是不使用该名称开始。好的,明白了!以前从未想过这个概念,但我想我在编辑后的答案中正确地阐明了它。谢谢!但我仍然得到一个错误,NameError(“未定义名称”number“,)堆栈跟踪:>文件“f:\projects\pythonapplication\pythonapplication1\pythonapplication1.py”,第21行,在>checkValidity(number)Loaded'main'中,程序“python.exe”已退出,代码为-1(0xffffffff),checkValidity()无法访问输入函数中的数字变量。
def input():
    number = int(input('enter a number: '))
    return number

input()

def checkValidity(val):
    if val == 0 and val >= 2:
        switch(val)
    else:
        input()

def switch(num):
    if num == 1:
        print('one')
    elif num == 2:
        print('two')
    else:
        print('null')

checkValidity(number)