目录
float() argument must be a string or a real number, not list
float() 参数必须是字符串或实数,而不是列表
当我们将列表传递给类时,会出现 Python“TypeError: float() argument must be a string or a real number, not ‘list’” float()
。
要解决该错误,请访问列表中的特定项目并将该项目传递给类float()
,例如float(my_list[0])
.
下面是错误如何发生的示例。
my_list = ['1.1', '2.2', '3.3'] # ⛔️ TypeError: float() argument must be a string or a real number, not 'list' result = float(my_list)
我们将整个列表传递给导致错误的float()类。
访问特定索引处的列表以解决错误
解决错误的一种方法是访问特定索引处的列表并将该项目传递给类float()
。
my_list = ['1.1', '2.2', '3.3'] result = float(my_list[0]) print(result) # 👉️ 1.1
我们访问索引处的列表0
并使用该类float()
将值转换为浮点数。
0
基于索引的,因此列表中的第一项的索引为0
,最后一项的索引为-1
。将列表中的所有值转换为浮点数
如果您打算将列表中的所有项目转换为浮点数,
请使用 list comprehension。
my_list = ['1.1', '2.2', '3.3'] new_list = [float(x) for x in my_list] print(new_list) # 👉️ [1.1, 2.2, 3.3]
列表推导用于对每个元素执行某些操作或选择满足条件的元素子集。
我们将列表中的每个字符串传递给类float()
以将每个项目转换为整数。
或者,您可以使用该map()
功能。
my_list = ['1.1', '2.2', '3.3'] new_list = list(map(float, my_list)) print(new_list) # 👉️ [1.1, 2.2, 3.3]
map ()函数将一个函数和一个可迭代对象作为参数,并使用可迭代对象的每个项目调用该函数。
我们将float()
类传递给map()
,因此该类将列表中的每个值作为参数传递,并将其转换为浮点数。
最后一步是将
地图对象转换为列表。
float() 参数必须是字符串或实数,而不是 NoneType
None
当我们将值传递给类时,会出现 Python“TypeError: float() argument must be a string or a real number, not ‘NoneType’” float()
。
要解决该错误,请更正分配或提供回退值。
下面是错误如何发生的示例。
example = None # ⛔️ TypeError: float() argument must be a string or a real number, not 'NoneType' result = float(example)
我们正在将一个None
值传递给float()
导致错误的类。
Python 中 None 的常见来源
最常见的None
价值来源是:
- 有一个不返回任何东西的函数(
None
隐式返回)。 - 将变量显式设置为
None
. - 将变量分配给调用不返回任何内容的内置函数的结果。
- 具有仅在满足特定条件时才返回值的函数。
如果变量为 None,则提供默认值
解决错误的一种方法是提供回退值,例如,0
如果变量存储None
.
example = None result = float(example or 0) print(result) # 👉️ 0.0
该表达式检查示例变量是否存储了一个假值,如果是则0
返回。
不返回值的函数返回 None
不显式返回值的函数 return None
。
# 👇️ this function returns None def get_str(): print('3.14') # ⛔️ TypeError: float() argument must be a string or a real number, not 'NoneType' result = float(get_str())
您可以使用return 语句从函数返回值。
def get_str(): return '3.14' result = float(get_str()) print(result) # 👉️ 3.14
检查变量是否不存储 None 值
如果在将变量传递给类之前if
需要检查变量是否未存储值,
请使用语句。None
float()
example = None if example is not None: result = float(example) print(result) else: # 👇️ this runs print('variable stores a None value')
或者,您可以将变量重新分配给后备值。
example = None if example is None: example = 0 result = float(example) print(result) # 👉️ 0.0
如果变量等于None
,if
块运行并将其设置为0
。
只在满足条件时才返回值的函数
错误的另一个常见原因是具有仅在满足条件时才返回值的函数。
def get_num(a): if a > 15: return a my_num = get_num(10.5) print(my_num) # 👉️ None
if
函数中的块仅get_num
在传入的数字大于 时运行15
。
None
。要解决错误,您要么必须检查函数是否未返回
None
,要么在不满足条件时返回默认值。
def get_num(a): if a > 15: return a return 0 # 👈️ return fallback if condition not met my_num = get_num(10.5) print(my_num) # 👉️ 0
现在,无论条件是否满足,函数都保证返回一个值。
float() 参数必须是字符串或实数,而不是方法
当我们将方法传递给类时,会出现 Python“TypeError: float() argument must be a string or a real number, not ‘method’” float()
。
要解决该错误,请确保调用带有括号的方法,例如
my_method()
.
下面是错误如何发生的示例。
class MyClass(): def get_str(self): return '3.14' m = MyClass() # ⛔️ TypeError: float() argument must be a string or a real number, not 'method' result = float(m.get_str) # 👈️ forgot to call method
m.get_str()
,所以我们的代码实际上试图将方法转换为浮点数。调用解决错误的方法
要解决错误,请确保调用该方法。
class MyClass(): def get_str(self): return '3.14' e = MyClass() # ✅ call method() with parentheses result = float(e.get_str()) print(result) # 👉️ 3.14
我们使用括号来调用方法,所以现在我们的代码将方法的返回值转换为浮点数。
my_obj.my_method(10, 20)
.检查变量存储的类型
如果您不确定变量存储的对象类型,请使用类type()
。
class MyClass(): def get_str(self): return '3.14' e = MyClass() print(type(e.get_str)) # 👉️ <class 'method'> print(callable(e.get_str)) # 👉️ True my_float = 3.14 print(type(my_float)) # 👉️ <class 'float'> print(isinstance(my_float, float)) # 👉️ True
类型
类
返回对象的类型。
如果传入的对象是传入类的实例或子类,则isinstance函数返回
。True
可调用函数将一个对象作为参数,True
如果该对象看起来可调用则返回,否则False
返回。
如果callable()
函数返回True
,调用对象仍有可能失败,但是,如果返回False
,调用对象将永远不会成功。