Как насчет этого:
sentence = 'After 1500 years of that thinking surpressed'
sentence = sentence.lower()
def removeLetter(text,char):
result = ''
for c in text:
if c != char:
result += c
return text.replace(char,'*')
text = removeLetter(sentence,'a')
Декораторы - это просто синтаксический сахар, чтобы заменить функциональный объект украшенной версией, где украшение - это просто вызов (передача в исходном объекте функции). Другими словами, синтаксис:
@decorator_expression
def function_name():
# function body
грубо (*) переводится на:
def function_name():
# function body
function_name = decorator_expression(function_name)
В вашем случае вы можете применить свой декоратор вручную вместо:
from random import randint
randint = decorator(randint)
(*) При использовании функции @<decorator>
для функции или класса результат определения def
или class
не связан (назначается их имени в текущем пространстве имен). Декоратор передается объекту непосредственно из стека, и тогда только результат вызова декоратора привязывается.
functools.wraps
– pratikm 1 March 2016 в 22:06functools.wraps
, но это не изменит, как вы можете применить i> декоратор. – Martijn Pieters♦ 1 March 2016 в 23:39@app.route('/route', methods=['GET'])
. – CMCDragonkai 27 July 2018 в 05:41app.route('/route', methods=['GET'])(view_func)
(нет необходимости записывать возвращаемое значение, так как декорapp.route()
регистрируется и возвращает функцию просмотра без изменений). Не то чтобы вы это делали, так как вы могли просто использоватьapp.add_url_rule()
вместо:app.add_url_rule('/route', view_func.__name__, view_func, methods=['GET'])
. – Martijn Pieters♦ 27 July 2018 в 09:36