Python 用户输入内部函数

Python 用户输入内部函数,python,Python,为什么用户在打印下输入给我错误 def num(n): sum = n * 5 print("Amount of n is:", sum) user = float(input("Specify any number: ")) num(user) NameError: name 'user' is not defined 但为什么它在def下工作?我想知道它背后的逻辑 def num(n): sum = n * 5

为什么用户在打印下输入给我错误

def num(n):
    sum = n * 5
    print("Amount of n is:", sum)
    user = float(input("Specify any number: "))

num(user)

NameError: name 'user' is not defined
但为什么它在def下工作?我想知道它背后的逻辑

def num(n):
    sum = n * 5
    print("Amount of n is:", sum)
user = float(input("Specify any number: "))

num(user)
结果是:

Specify any number: 10
Amount of n is: 50.0
           
    

Python中的缩进很重要,并影响变量的作用域

在您发布的第一个示例中,
user
是在
num
函数的范围内定义的(在
def
下的缩进块内),因此它只存在于该函数内。此外,它在函数被调用之前不存在,因此当您调用
num(user)
时,您试图传递一个不存在的值


在第二个示例中,您在函数外部定义了
user
(在模块范围内,没有缩进),因此它可用于同一范围内的后续代码行。

输出显示错误,因为您试图访问局部变量“user”在全局范围内,而局部变量仅在函数内部工作。当您在函数体中声明变量时,我们将其称为局部变量。

@Samwise以清晰的方式回答了您的问题。 但是,如果您确实希望在函数中使用输入,只需执行以下操作

user = 1           # just for a variable need to pass into function
def num(n):
    global user
    n = float(input("Specify any number: "))
    sum = n * 5
    print("Amount of n is:", sum)
    

num(user)

因为在后一种情况下,用户变量在函数范围内;这回答了你的问题吗?您从错误消息中了解到了什么?这是否回答了您的问题?谢谢你的帮助