偏函数对log()无效
Topic source半解决。只能不去碰矢山,哪怕原地tp:
def mylog(x, base): return log(x, base)
l3 = partial(mylog, base=3)
print (l3(3), l3(9))
log的这个base不是一个kw参数 故在partial里面不能用 base=3 指定它
而且log的base在第二个参数位置 你直接去掉 base= 会导致每次调用 ll3 都是求以给出参数为底的 3 的对数
因为 3 是从 *args 左边加进去的 也就是说 3 占据了参数 x 的位置
以上我的表达有点抽象 我认为应该这样写:
def wp(base:float, x:float):
return log(x, base)
log3 = partial(wp, 3)
print(f"{log3(9)} {log3(27)}")
问题确实存在,icm162所说的并不是原因,位置关键字也可以通过命名方式传入的。这里不能肯定有其他原因:
def f(a, b, *, c, d):
print(f"{a}, {b}, {c}, {d}")
f2 = partial(f, b = 20)
f2(10, c = 30, d = 40)
- 1
幽境的荼蘼
以下是试图导出以3为底的对数的尝试。
值得一提的是,log的说明 (function) log: (x: float, base: float = e) 似乎在提示其第二个也是最后一个参数名叫base。
但是被注释掉的这行,运行时报错:
TypeError: log() takes no keyword arguments
而下面那一行,不好意思,是固定了真数为3的“对数”,代入的实参是底数。