Форум сайта python.su
0
привет!
Я совсем новичок, вопросы у меня очень глупые.
Мне нужно что то на подобии пользовательского типа, передаваемого в функцию.
def my_func(day_of_week: monday):
мне нужно что бы я мог использовать именно дни недели.
day_of_week : mondey, sunday, …
Был бы очень благодарен если дадите ссылку на примеры практической реализации приложений, что бы понять как пишутся реальные сценарии.
Спасибо!
Отредактировано Romb (Март 23, 2016 13:16:31)
Офлайн
568
RombВ питоне нет никаких ограничений на передачу значения в функцию. То, что вы хотите в пионе сделать невозможно ввиду отсутствия этапа компиляции.
мне нужно что бы я мог использовать именно дни недели.
Офлайн
0
Спасибо за ответ.
Если я хочу использовать как аргумент функции переменную которая может быть только, например “YES” или “NO”. Мне сделать проверку в этой функции и выводить ошибку если ввили не правильное значение? А если я хочу использовать такие аргументы во многих функциях, мне прийдется эту проверку делать во всех местах. Могу ли я как то сделать что бы не копировать проверку каждый раз туда где мне нужно применить это условие.
Отредактировано Romb (Март 23, 2016 16:03:45)
Офлайн
568
Может быть вы не поняли, повторю еще раз: в питоне нет этапа компиляции, поэтому ошибку вы получите только в рантайме. Проверяют значения после ввода, а не после передачи в функцию.
Офлайн
61
ну так создайте функцию для проверки chek(data)
а далее используете ее внутри ваших конструкций
if check(data):
ololo…
Офлайн
0
Спасибо за ответ.
Как то не очень удобно получается.
Нельзя сделать как встроенный тип данных?
Офлайн
14
Romb
Свой тип ты можешь создать, пишешь класс это будет твои тип данных. Просто соль в том, что ты не можешь ограничить тип данных поступающих в функцию, потому что python язык с динамической типизацией и типы тут не проверяются. Тут применяется принцип утиной типизации:
Если это выглядит как утка, плавает как утка и крякает как утка, то это возможно и есть утка.
Отредактировано alex925 (Март 23, 2016 18:32:14)
Офлайн
0
Спасибо за ответ.
Офлайн
253
RombНет не можете. Причем не только на питоне а и на любом языке. Если там не будет никаких признаков, то как вы отличите функцию в которой нужна проверка от функции в которой она не нужна?
Могу ли я как то сделать что бы не копировать проверку
Офлайн
24
Вот кстати у Саммерфилда в книге “Питон на практике” в примере с параметризированным декоратором то, что нужно автору.
Офлайн