错误代码
伪代码:
#!/usr/bin/env python3
a = {'name': 'nock', 'age': 18}
print(a['name'], a.get['name'])
上面的代码是我模拟我当时写程序中代码的情况,我程序中代码如下:
for table_name in ["dns", "outside"]:
select_sql = "SELECT * FROM %s" % table_name
if table_name == 'dns':
dns_data = get_mysql_data(select_sql)
elif table_name == 'outside':
ping_data = get_mysql_data(select_sql)
def data_merge(data=None):
for i in dns_data:
print(i.get['id'])
错误结果:
File "test.py", line 3, in <module>
print(a['name'], a.get['name'])
TypeError: 'builtin_function_or_method' object is not subscriptable
我相信明眼人一看就知道哪里出错了,就是a.get 后面应该是小括号
而不应该是中括号
,正确代码如下:
#!/usr/bin/env python3
a = {'name': 'nock', 'age': 18}
print(a['name'], a.get('name'))
为什么会犯错
因为我知道Python字典利用a[key]的方式是可以访问value元素的,但是这种情况在key
不存在的情况下会报KeyError
错误,而使用get方法则不会抛出错误,默认是None
,当然可以d.get("name", "default")
指定默认值,如下:
那既然我知道这么情况,我报错了,就是因为我记错了,是.get()
,我记成.get[]
了,这就是刻板印象啊,现在好了搞明白了,切记大家以后看到TypeError: 'builtin_function_or_method' object is not subscriptable
这个错误都是你用错了都是括号不对!
本文由 空心菜 创作,采用 知识共享署名4.0 国际许可协议进行许可
本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名
最后编辑时间为: Apr 17, 2018 at 01:09 pm