TypeError与功能,但否则可以正常工作

时间:2018-08-31 22:08:08

标签: python python-3.x

我收到“ TypeError:字符串索引必须是整数”,并带有以下代码。

import json

j = {
    "id": 1000,
    "name": "John Doe"
}

def test(j):
    if j['id']:
        print("Value present")
    else:
        print("No Id found")

test(j)

现在运行它:

python3 delme.py    
Value present
Traceback (most recent call last):
  File "delme.py", line 15, in <module>
    test("")
  File "delme.py", line 9, in test
    if j['id']:
TypeError: string indices must be integers

但是,如果我执行以下操作,则在一个新的Python实例中,此评估工作正常吗?

if j['id']
    print("WORKS")

将j传递给函数时会发生什么变化?另外,J将永远只有一个“ id”键,那么验证它是否存在的最简单方法是什么?

1 个答案:

答案 0 :(得分:2)

The code you posted is fine。您发布的错误包括normalize(rooms, roomsSchema),这不是您发布的代码。

test("")是函数的j的参数,因此python在test中查找局部变量。如果您尝试使用全局,则定义不带参数的测试

test

对于将重现错误的代码,全局j = { "id": 1000, "name": "John Doe" } def test(): # note: empty () if j['id']: print("Value present") else: print("No Id found") test() # added a call here 无关紧要:

j