在源代码Stable Baselines3common/preprocessing.py中,在第158行,有:return (int(len(observation_space.nvec)),).

据我所知,在Python中,len只能返回int,无论这是否为真,在这里都会返回int(可能在两个方面都是错误的).如果是这样的话,对int的强制转换对我来说就没有意义了.

我是不是漏掉了什么?

推荐答案

没有必要拨打int的电话.

len总是返回int.如果类的__len__实现返回int以外的值,则Python会try 将其转换为int.如果不能做到这一点,将提高TypeError.不存在len可以返回int以外的值的情况.

你可以try 自己违反这一点:

class Foo:
    def __len__(self):
        return "bad"

>>> len(Foo())
Traceback (most recent call last)
...
TypeError: 'str' object cannot be interpreted as an integer

Python相关问答推荐

Python(Polars):使用之前的变量确定当前解决方案的Vector化操作

从多行文本中提取事件对

合并其中一个具有重叠范围的两个框架的最佳方法是什么?

已安装' owiener ' Python模块,但在导入过程中始终没有名为owiener的模块

使用argsorted索引子集索引数组

优化在numpy数组中非零值周围创建缓冲区的函数的性能

pandas DataFrame GroupBy.diff函数的意外输出

Python daskValue错误:无法识别的区块管理器dask -必须是以下之一:[]

根据不同列的值在收件箱中移动数据

Matlab中是否有Python的f-字符串等效物

try 在树叶 map 上应用覆盖磁贴

ModuleNotFound错误:没有名为flags.State的模块; flags不是包

将两只Pandas rame乘以指数

C#使用程序从Python中执行Exec文件

删除字符串中第一次出现单词后的所有内容

优化器的运行顺序影响PyTorch中的预测

利用Selenium和Beautiful Soup实现Web抓取JavaScript表

与命令行相比,相同的Python代码在Companyter Notebook中运行速度慢20倍

为什么\b在这个正则表达式中不解释为反斜杠

未调用自定义JSON编码器