je le débogueur générique suivante:rassemblent les noms de param de votre déclaration de fonction
def debugger(method):
def dec(*args, **kwargs):
print("\ndebugging '{name}':\n".format(name=method.__name__))
FOUR_SPACES = " " * 4
EIGHT_SPACES = " " * 8
if args:
print("{four}args:\n".format(four=FOUR_SPACES))
for arg in args:
print("%s%s" % (EIGHT_SPACES, arg))
if kwargs:
for key, value in kwargs.items():
print("{four}{key}:\n{eight}{value}\n".format(
four=FOUR_SPACES,
key=key,
eight=EIGHT_SPACES,
value=value
))
if args or kwargs:
print("\n")
result = method(*args, **kwargs)
return result
return dec
@debugger
def generate_minutes_in_timespan(start, end, cutoff_date=None):
# cutoff_date is just example of kwarg
minutes_delta = (end - start).seconds/60
datetimes = []
delta_range = range(0, minutes_delta + 1)
return [start + timedelta(minutes=i) for i in delta_range]
Debugger fera:
debugging 'generate_minutes_in_timespan':
args:
2017-08-31 17:19:00
2017-09-01 12:05:00
cela me plaît un peu, mais remarquez que j'ai raté la vraie information.
Ce que je veux:
debugging 'generate_minutes_in_timespan':
args:
start = 2017-08-31 17:19:00
end = 2017-09-01 12:05:00
*args:
not allowed
kwargs:
cutoff_date = None
*kwargs:
not allowed
Ces args ont une signification sémantique, et peuvent être utilisés comme start
et end
... ils ne sont pas *args
.
Y at-il une manière profonde dans la bibliothèque standard de Python Je peux lire cette méthode generate_minutes_in_timespan
et arrachez la déclaration, les noms et l'ordre des args de position nécessaires, aussi les noms des kwargs déclarés (comme déclarant cutoff_date=None
, je veux savoir cutoff_date
a été offert comme un kwarg, vs le **kwargs
...)
Je tire pour {'args': [('start', 'the value given'), ('end', 'the user given value')], 'star_args': None, 'kwargs': {'cutoff_date': None}, 'star_kwargs': None}
pour l'information complète de débogage.
Merci
Je pense que l'utilisateur est sur py 2 parce qu'ils comptaient sur une division entière '/'. C'est certainement une meilleure réponse que la mienne pour les utilisateurs de py 3. – wim