Помимо использования Dev Tools, чтобы убедиться, что кеш отключен, вы можете отредактировать файл Web.config
и сказать IIS не кэшировать ваши Angular-файлы:
<configuration>
<!-- Disable IIS caching for directories containing Angular templates and scripts -->
<location path="app">
<system.webServer>
<staticContent>
<clientCache cacheControlMode="DisableCache"/>
</staticContent>
</system.webServer>
</location>
...
</configuration>
Мой корневой каталог Angular - app/
, Возможно, вам придется изменить в соответствии с вашей файловой структурой.
Хотя inspect может немного помешать вам, то, что вы хотите, в целом невозможно :
def f(*args):
pass
Теперь, сколько аргументов f
взять? Поскольку * args
и ** kwargs
допускают произвольное количество аргументов, нет способа определить количество аргументов, требуемых функции. На самом деле, бывают случаи, когда функция действительно обрабатывает столько, сколько было брошено ей!
Изменить: если вы готовы мириться с подробным
в качестве специального аргумента ключевого слова, вы можно сделать это:
import time
def timed(f):
def dec(*args, **kwargs):
verbose = kwargs.pop('verbose', False)
t = time.clock()
ret = f(*args, **kwargs)
if verbose:
print("%s executed in %ds" % (f.__name__, time.clock() - t))
return ret
return dec
@timed
def add(a, b):
return a + b
print(add(2, 2, verbose=True))
(Спасибо Alex Martelli за совет kwargs.pop
!)
это может быть сложно, но вы можете что-то сделать в этих строках. Приведенный ниже код пытается удалить все лишние аргументы и распечатывает их.
def mydeco(func):
def wrap(*args, **kwargs):
"""
we want to eat any extra argument, so just count args and kwargs
and if more(>func.func_code.co_argcount) first take it out from kwargs
based on func.func_code.co_varnames, else last one from args
"""
extraArgs = []
newKwargs = {}
for name, value in kwargs.iteritems():
if name in func.func_code.co_varnames:
newKwargs[name] = value
else:
extraArgs.append(kwargs[name])
diff = len(args) + len(newKwargs) - func.func_code.co_argcount
if diff:
extraArgs.extend(args[-diff:])
args = args[:-diff]
func(*args, **newKwargs)
print "%s has extra args=%s"%(func.func_name, extraArgs)
return wrap
@mydeco
def func1(a, b, c=3):
pass
func1(1,b=2,c=3, d="x")
func1(1,2,3,"y")
вывод
func1 has extra args=['x']
func1 has extra args=['y']
+1 к ответу Stephan202, однако (помещая это в отдельный ответ, поскольку комментарии плохо форматируют код!), Следующий фрагмент кода в этом ответе:
verbose = False
if 'verbose' in kwargs:
verbose = True
del kwargs['verbose']
может быть выражен гораздо более четко и кратко, как:
verbose = kwargs.pop('verbose', False)