python - 为什么 Python 假定未声明类型的变量是数组?
问题描述
我正在按间隔定义一个函数。当 python 将参数fck
与 2 个间隔 ( fck<50
) 之间的分隔值进行比较时,它会返回错误。我知道它不能将数组与整数进行比较,但fck
它不是数组!这是我打算成为浮点数的参数。python如何决定参数的类型以及如何定义它?
在我定义的其他类似功能中,一切都很好。我包括有问题的功能和一个工作的例子。我看不出它们之间有什么区别。问题是什么?我不仅想让它工作,还想了解python在做什么。
我试过通过做来说明参数的类型def par_rec(eps,fck:float):
,它不会改变结果。
在第二行返回错误的定义:
def par_rec(eps,fck):
if fck<50:
eps0=0.002
else:
eps0=0.002+0.000085*(fck-50)**0.5
if fck<50:
epsu=0.0035
else:
epsu=0.0026+0.0144*((100-fck)/100)**4
if fck<50:
n=2
else:
n=1.4+9.6*((100-fck)/100)**4
if eps<0:
sig=0
elif eps<eps0:
sig=fck/1.5*(1-(1-eps/eps0)**n)
else:
sig=fck/1.5
return sig
还有一个不会引起任何问题的类似定义:
def fctm(fck):
if fck<50:
fctm = 0.3 * fck ** (2 / 3)
else:
fctm=0.58*fck**0.5
return fctm
当我收到错误时,我正在定义函数,而不是调用它:
line 81, in par_rec
if fck<50:
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
解决方案
但 fck 不是数组!
fck 可能是一个数组,因为您没有提供任何证明它不是数组的证据,也没有向我们展示您如何调用您的函数。也请给我们看print(type(fck))
。
它的类型没有在任何地方定义
这在 python 中是不可能的。每个对象(变量也是对象)都有一个类型。如果您不分配任何值,则变量将未定义。如果你分配一个值,那么 python 会自动分配一个匹配的类型。如果要初始化一个有效但“空”的变量,请分配None
.
推荐阅读
- r - R中的克鲁斯卡尔瓦利斯
- anypoint-studio - 骡 3 进口 | 所选文件夹不包含有效的 Studio 项目(缺少 mule-project.xml 文件)
- css - 我无法加载 .woff
- excel - 数据验证应用于任何允许具有特定文本的值的突出显示的列
- google-bigquery - 如何查询 BigQuery 视图和表的依赖关系?
- swift - 如何快速计算变量值的数量?
- python - 如何在python中确定两个向量是线性相关还是独立的?
- c# - PlayAgain 方法
- java - 使用 lombok 1.18.12 构建的 gradle 6.4 不生成 getter 和 setter
- python - 如何在 Python 3 中使用生成器管道?