NameError:名称“true”未在 Python 中定义
NameError: name ‘true’ is not defined in Python
当我们拼错关键字时,会出现 Python “NameError: name ‘true’ is not defined” True
。
要解决该错误,请确保将关键字 – 的首字母大写
True
。
下面是错误如何发生的示例。
# ⛔️ NameError: name 'true' is not defined. Did you mean: 'True'? t = true print(t)
T
为了解决这个错误,我们必须在拼写True
关键字时使用大写字母。
t = True print(t) # True
变量、函数、类和关键字的名称在 Python 中区分大小写。
唯一可用的
布尔值
是False
(capital F
)。
t = True print(t) # 👉️ True f = False print(f) # 👉️ False
True
和False
。两个布尔值的类型是<class 'bool'>
.
print(type(True)) # 👉️ <class 'bool'> print(type(False)) # 👉️ <class 'bool'>
当我们忘记将 JSON 数据解析为本机 Python 对象时,也会经常发生该错误。
下面是错误如何发生的示例。
# ⛔️ NameError: name 'true' is not defined. Did you mean: 'True'? json_str = {"is_subscribed": true, "is_admin": true}
要解决该错误,请在您的代码中替换所有出现的true
with 。True
json_str = {"is_subscribed": True, "is_admin": True}
true
确保将代码中所有出现的 替换为. True
如果您要将 JSON 字符串粘贴到 Python 代码中,请将其用引号引起来并将其标记为原始字符串。
import json json_str = r'''{"is_subscribed": true, "is_admin": true}''' # 👇️ convert JSON string to native Python object native_python_obj = json.loads(json_str) print(native_python_obj) # 👉️ {'is_subscribed': True, 'is_admin': True}
我们使用json.loads
方法将 JSON 字符串反序列化为本机 Python 对象。
当我们将 JSON 字符串解析为 Python 对象时,所有true
值都变为
True
.
或者,您可以声明一个true
变量并为其赋值
True
.
true = True my_dict = {"is_subscribed": true, "is_admin": true}
但是,请注意,这是一个 hacky 解决方案,可能会让代码的读者感到困惑。
您可以使用
json.dumps方法将 Python 对象序列化为 JSON 格式的字符串。
import json # ✅ convert Python object to JSON json_str = json.dumps({"is_subscribed": True, "is_admin": True}) print(json_str) # 👉️ {"is_subscribed": true, "is_admin": true} print(type(json_str)) # 👉️ <class 'str'> # ✅ Parse JSON string to Python object native_python_obj = json.loads(json_str) print(native_python_obj) # 👉️ {'is_subscribed': True, 'is_admin': True} print(type(native_python_obj)) # 👉️ <class 'dict'>
请注意,True
当true
Python 对象转换为 JSON 字符串时会变成这样。
相反,当我们将 JSON 字符串解析为原生 Python 对象时,true
就变成了True
.
如果您使用requests模块发出 HTTP 请求,您可以调用json()
响应对象上的方法将 JSON 字符串解析为本机 Python 对象。
import requests def make_request(): res = requests.get('https://reqres.in/api/users') print(type(res)) # 👉️ <class 'requests.models.Response'> # ✅ Parse JSON to native Python object parsed = res.json() print(parsed) print(type(parsed)) # 👉️ <class 'dict'> make_request()
The res
variable is a Response
object that allows us to access information
from the HTTP response.
We can call the json()
method on the Response
object to parse the JSON
string into a native Python object which would convert any true
values to
their Python equivalent of True
.
Boolean objects in Python are
implemented as a subclass of integers.
print(isinstance(True, int)) # 👉️ True print(isinstance(False, int)) # 👉️ True
Converting a True
boolean value to an integer returns 1
, whereas converting
False
returns 0
.
print(int(True)) # 👉️ 1 print(int(False)) # 👉️ 0
You can use the not
(negation) operator to invert a boolean value.
print(not True) # 👉️ False print(not False) # 👉️ True
You can use the built-in bool()
function to convert any value to a boolean.
print(bool(1)) # 👉️ True print(bool('hello world')) # 👉️ True print(bool('')) # 👉️ False print(bool(0)) # 👉️ False
The bool() function
takes a value and converts it to a boolean (True or False). If the provided
value is falsy or omitted, then bool
returns False
, otherwise it returns
True
.
All values that are not truthy are considered falsy. The falsy values in Python
are:
- constants defined to be falsy:
None
andFalse
. 0
(zero) of any numeric type- empty sequences and collections:
""
(empty string),()
(empty tuple),[]
(empty list),{}
(empty dictionary),set()
(empty set),range(0)
(empty
range).
The bool()
function returns True
if passed any non-falsy value.
Conclusion #
当我们拼错关键字时,会出现 Python “NameError: name ‘true’ is not defined” True
。
要解决该错误,请确保将关键字 – 的首字母大写
True
。