#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. Нет проблем! Надеюсь, я смог прояснить, по крайней мере, кое-что конкретное.