← Назад к вопросам

Как называется свойства превращение строки в число?

2.0 Middle🔥 171 комментариев
#Python Core

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI22 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Как называется свойство превращение строки в число?

Превращение строки в число в программировании называется "Типизация" (Type Casting) или более точно — "Преобразование типов" (Type Conversion). Существует несколько терминов для описания этого процесса:

1. Основные термины

Type Casting / Явное преобразование типов: Это процесс, когда программист явно преобразует один тип данных в другой:

# Преобразование строки в число
string_number = "42"
integer = int(string_number)
float_number = float("3.14")

print(type(integer))     # <class 'int'>
print(type(float_number)) # <class 'float'>

Type Coercion / Неявное преобразование типов: Когда язык автоматически преобразует типы без участия программиста:

# Python НЕ делает неявное преобразование строк в числа
result = "5" + 10  # TypeError: can only concatenate str with str

# Но делает в других случаях
result = 5 + 3.14  # 8.14 (int + float = float)
print(type(result))  # <class 'float'>

2. Способы преобразования строки в число в Python

int() — преобразование в целое число:

# Из строки
print(int("42"))          # 42
print(int("-100"))        # -100
print(int("0"))           # 0

# Из float
print(int(3.99))          # 3 (обрезается, не округляется)

# С разными основаниями
print(int("FF", 16))      # 255 (шестнадцатеричная)
print(int("1010", 2))     # 10 (двоичная)
print(int("77", 8))       # 63 (восьмеричная)

float() — преобразование в число с плавающей точкой:

print(float("3.14"))      # 3.14
print(float("-2.5"))      # -2.5
print(float("1e-3"))      # 0.001 (научная нотация)
print(float("inf"))       # inf (бесконечность)
print(float("-inf"))      # -inf
print(float("nan"))       # nan (не число)

complex() — преобразование в комплексное число:

print(complex("3+4j"))    # (3+4j)
print(complex("2j"))      # 2j

3. Валидация при преобразовании

Обработка ошибок:

# ValueError выбросится, если строка не содержит число
try:
    number = int("abc")
except ValueError:
    print("Строка не может быть преобразована в число")

# Пример функции с обработкой
def parse_integer(value, default=0):
    try:
        return int(value)
    except ValueError:
        return default

print(parse_integer("42"))      # 42
print(parse_integer("invalid"))  # 0 (default)
print(parse_integer("3.14"))     # 0 (float строка)

Проверка перед преобразованием:

def is_integer_string(value):
    """Проверяет, содержит ли строка целое число"""
    try:
        int(value)
        return True
    except ValueError:
        return False

print(is_integer_string("42"))      # True
print(is_integer_string("3.14"))    # False
print(is_integer_string("abc"))     # False

# Или используя str.isdigit()
print("42".isdigit())               # True
print("-42".isdigit())              # False (минус не цифра)
print("3.14".isdigit())             # False (точка не цифра)

4. Преобразование из числа в строку

str() — обратное преобразование:

print(str(42))          # "42"
print(str(3.14))        # "3.14"
print(str(True))        # "True"

# Форматирование
number = 42
formatted = f"Число: {number}"  # "Число: 42"
print(formatted)

# Более сложное форматирование
pi = 3.14159
print(f"π = {pi:.2f}")  # π = 3.14

5. Специальные случаи и граничные условия

# Пробелы обрезаются
print(int("  42  "))    # 42
print(float(" 3.14 "))  # 3.14

# Знак плюс работает
print(int("+42"))       # 42

# Ведущие нули игнорируются
print(int("0042"))      # 42

# Подчеркивания (Python 3.6+)
print(int("1_000_000")) # 1000000
print(float("3.14_15")) # 3.1415

# Очень большие числа
big_number = int("123456789012345678901234567890")
print(big_number)       # 123456789012345678901234567890

# NaN и Infinity
print(float("inf"))     # inf
print(float("-inf"))    # -inf
print(float("nan"))     # nan

6. Преобразование в других контекстах

JSON парсинг:

import json

json_string = '{"age": "25", "price": "19.99"}'
data = json.loads(json_string)

# JSON автоматически не преобразует строки в числа
print(type(data['age']))      # <class 'str'>
print(type(data['price']))    # <class 'str'>

# Нужно преобразовать вручную
age = int(data['age'])
price = float(data['price'])
print(type(age))              # <class 'int'>
print(type(price))            # <class 'float'>

От пользователя:

# input() всегда возвращает строку
user_input = input("Введи число: ")  # "42"
number = int(user_input)             # 42
print(number + 8)                    # 50

7. Современные подходы с type hints

from typing import Union

def convert_to_number(value: str) -> Union[int, float, None]:
    """Преобразует строку в число с проверкой типа"""
    try:
        if '.' in value:
            return float(value)
        else:
            return int(value)
    except ValueError:
        return None

result = convert_to_number("42")
if isinstance(result, (int, float)):
    print(f"Число: {result}")
else:
    print("Не удалось преобразовать в число")

8. Performance: выбор метода преобразования

import timeit

# Сравнение скорости различных методов
setup = 'value = "42"'

# int()
time_int = timeit.timeit('int(value)', setup=setup)
print(f"int(): {time_int}")

# Использовать встроенные функции — они быстрее
print("int() — самый быстрый способ")

Рекомендации:

  • int() — для целых чисел
  • float() — для чисел с плавающей точкой
  • Обработка ошибок — всегда оборачивай в try/except
  • Валидация перед преобразованием — используй isdigit() или regex
  • str.strip() — удали пробелы перед преобразованием
  • Type hints — указывай типы для читаемости

Правильное название: это Type Casting (явное преобразование типов) или Type Conversion (преобразование типов).