Нет, встроенной функции, подобной этой, не существует.
Один из основных аспектов разработки Python заключается в том, что она строго типизирована , что означает, что значения неявно приведен от одного типа к другому. Например, вы не можете сделать 'foo' + 3
, чтобы сделать строку 'foo3'
; Вы должны написать 'foo' + str(3)
, чтобы явно преобразовать int
в str
, чтобы использовать конкатенацию строк. Поэтому наличие встроенных операторов или функций, которые могут обрабатывать скалярное значение, как если бы оно представляло собой последовательность длиной 1, нарушало бы принцип строгой типизации.
Это контрастирует со слабо типизированными языками, такими как Javascript и PHP, где приведение типов осуществляется с мыслью, что программисту не нужно так много думать о типах данных и о том, как они преобразуются; на практике, если вы пишете на этих языках, вам все равно приходится думать о типах и преобразованиях, вы просто должны знать, какие преобразования выполняются или не выполняются неявно.
Итак, в Python, если если вы хотите, чтобы функция работала с несколькими различными типами данных, вам нужно либо выполнить преобразование явно (например, if isinstance(x, float): x = np.array([x])
), либо использовать только те операции, которые поддерживаются каждым типом данных, который принимает ваша функция (например, duck набрав ).