Как назначить тип данных параметру, и если этот тип данных не совпадает с тем, который я назначил, возникает ошибка?

#python #python-3.x

Вопрос:

Хорошо, итак, я кодировал, когда наткнулся на проблему:

 def myFunction(string):
    print(string   "test")
 

Теперь, когда я вставляю строку, она работает совершенно нормально. Но, когда я ввел int:

 myFunction(str(1)):
 

Это все еще работает? Теперь я знаю, что присвоил str() функции значение «1». Но если бы я хотел иметь функцию, которая принимает параметр со строкой типа данных и вводит целочисленное значение для этого параметра, это все равно работает. Как я могу это сделать?

Комментарии:

1. помогает ли это? realpython.com/python-type-checking

2. Python-это динамически типизированный язык. Если вы хотите проверить типы некоторых параметров, вам придется сделать это вручную или использовать какую-либо стороннюю библиотеку, которая уже это делает

3. Когда вы переходите str(1) в функцию, вы передаете в нее строку , а не целое число. str(1) возвращает строку "1" . Но, как говорит хуанпа.арривиллага, Python не является статически типизированным.

Ответ №1:

Одним из вариантов является использование f-строк, что позволяет myFunction объединить тип, отличный от строки, со строкой:

 def myFunction(o: object):
    print(f'{o}test')
 

Или, что еще лучше:

 def myFunction(o: object):
    print(o, 'test', sep='')
 

Тогда желаемый вызов должен работать без необходимости str() явно переносить значение:

 >>> myFunction(1)
1test
 

Если вы предпочитаете быть более откровенным, я бы предложил изменить его, как показано ниже; то, что это делает, называется str(o) внутренне, только выглядит немного приятнее.

 def myFunction(o: object):
    print(f'{o!s}test')
 

Комментарии:

1. это действительно работает, но я понял, как это сделать, прежде чем вы опубликовали комментарий. Хотя спасибо тебе!

2. Нет проблем! Надеюсь, я смог прояснить, по крайней мере, кое-что конкретное.