在python中,当我尝试以下操作时:
admin = "Vaibhav"
def print_admin(default):
# global admin
if default == "default":
print(admin)
else:
admin = "other"
print(admin)
print_admin("")
print_admin("default")
它给了我一个错误:
error:UnboundLocalError: local variable 'admin' referenced before assignment
如果我使用global关键字,那么它只在这两种情况下使用global。 如果参数中没有给出“default”,我希望能够使用local(“other”),如果参数中没有给出,我希望能够使用global(“Vaibhav”)。你知道吗
这在javascript中非常有效,但在python中却不行。你知道吗
执行相同操作的Javascript代码:
let admin_name = "Vaibhav";
function printAdminName(admin_name_default) {
if (admin_name_default != "default") {
let admin_name = "Other";
console.log(admin_name)
}
else {
console.log(admin_name);
}
}
printAdminName("default");
printAdminName();
输出: 瓦伊巴夫 其他
**我还想知道为什么这在javascript而不是python中工作,因为这两种语言非常相似。我想知道是什么概念造成了这种差异。因为我花了很多时间来理清逻辑。你知道吗
在Python中,不能使用相同的名称来引用局部变量和全局变量。例如,使用
global admin
强制所有出现的admin
引用全局变量,这意味着更改admin
的值也将更改全局定义的admin
,这似乎不是您想要的。你知道吗完全可以(Pythonic)读取全局变量而不写入它们(更改它们),在这种情况下不需要
global
关键字。考虑这里我们通过不同的命名来区分
admin
的全局版本和本地版本。当您希望将两者都称为不同的变量时,这是必须的。你知道吗谈论变量的范围:
虽然我不太明白为什么要在这个函数中加入一个全局变量,但是如果出于某种原因必须这样做,可以用声明来约束局部变量。你知道吗
相关问题 更多 >
编程相关推荐