【发布时间】:2026-01-05 14:10:02
【问题描述】:
有没有一种优雅的方式来使用装饰器来模拟某些功能的试验,其中可以编辑试验的数量?
我希望这会起作用,但它没有。所以我想知道如何解决它。
from functools import wraps
from random import randint
def DiceRoll(dice_size=6):
return randint(1,dice_size)
def trials(func):
@wraps(func)
def wrapper(*args, num_trials, **kwargs):
results = []
for _ in range(num_trials):
result = func(*args, **kwargs)
results.append(result)
return results
return wrapper
@trials
def DiceRolls(dice_size=6, num_trials):
return DiceRoll(dice_size)
DiceRolls(num_trials)
【问题讨论】:
-
我明白为什么它不起作用(行:result = func(*args, **kwargs),但是有解决方法吗?
-
num_trials不应是def DiceRolls的参数,而必须是修饰调用的参数。def DiceRolls(dice_size=6):和DiceRolls(num_trials=5).