我是python的新手,想知道结果。我只想了解它。 假设我有以下字典:
employee = {
'user_name': 'my name',
'password': 'hello',
'mobile phone': 123456789
}
for i in employee:
print(i)
print(i)
这是结果:
user_name
password
mobile phone
mobile phone
如果您注意到(手机)已打印两次,则第二则来自上述代码中的第二次打印。
NameError:名称'i'未定义
通常是python。
答案 0 :(得分:2)
这里的问题是范围:
Python的作用域行为由函数作用域定义:请在此处查看更多documentation
由于您正在运行main函数,因此i
变量仍将在print
语句中定义,因为它与for
循环的作用域相同。>
因此它将具有循环的最后一次迭代的值(即“手机”)
#global scope (main function)
employee = {
'user_name': 'my name',
'password': 'hello',
'mobile phone': 123456789
}
for i in employee:
#you are still in the global scope here !!
print(i)
#and here too....so the "i" variable will have the value of your last iteration !
print(i)
更清楚地说,如果您要编写类似以下内容的话:
#global scope (main function)
employee = {
'user_name': 'my name',
'password': 'hello',
'mobile phone': 123456789
}
def show_employees() :
for i in employee:
#you are in the "show_employees" function scope here !!
print(i)
show_employees() # here you call the function
#and here you will get your "expected error" because "i" is not defined in the global scope
print(i)
输出:
文件“ main.py”,第18行,在 打印(i) NameError:名称“ i”未定义
答案 1 :(得分:1)
Python的范围与其他语言(例如C ++,C#或Java)有所不同。在这些语言中,声明
for (int i=0; i<10; i++) { ... }
i
仅在循环范围内定义。 Python并非如此。 i
仍然存在,并具有为其分配的最后一个值。
我要访问第一个或第二个密钥怎么办?可以像访问最后一个一样访问(而不写密钥名称或号码)吗?
不。除了使循环停在其他位置之外。