答案 0 :(得分:2)
动态和静态语言都需要"定义"。动态语言通常不需要声明"。定义是实际创建变量的时间。声明是一种正式的说法,从现在开始,这个变量存在" - 比如C. {/ p>中的int n;
在Python中,定义在赋值时发生。当您尝试获取变量的值(也称为解除引用)时会发生使用。您无法在不定义变量的情况下使用变量,这就是您看到此错误的原因。
像perl这样的语言,他们称之为autovivification。这意味着如果您使用变量而不定义它,它将自动为您定义。在这种情况下,该程序的行为将有所不同。 number
的值为0
。
答案 1 :(得分:1)
您的输入为3
,因此number
尚未定义,因为if-else阶梯错过了它。
如果您不想要“全能”其他条件,那么只需在if-else阶梯前指定number = 'default'
。
答案 2 :(得分:1)
键入某种语言与您所获得的错误无关。
动态类型表示名称/变量在编译时未绑定到特定类型。我们可以使相同的名称指向同一程序中的不同类型对象(在不同的行程中)。但这并不意味着您可以在定义之前访问名称/变量。
您得到的错误是因为根本没有定义名称/变量。此外,不是在number
中定义else
,而是在number
块之前将if..elif
定义为某个默认值似乎更容易。