
我们知道可以这样来用partial
import functools int2 = functools.partial(int, base=2) print(int2('10001')) # Output: '17'int 函数的解释如下:
class int(object) | int(x=0) -> integer | int(x, base=10) -> integer | | Convert a number or string to an integer, or return 0 if no arguments | are given. If x is a number, return x.__int__(). For floating point | numbers, this truncates towards zero.
我对 partial 参数的理解是,加入这么写
functools.partial(func, arg1)
则指定 func 最靠左的那个参数为 arg1
def fun(x, y, z): print('x: {0}; y: {1}; z: {2}'.format(x, y, z)) f1 = functools.partial(fun, 1) f1(2, 3) # Output: 'x: 1; y: 2; z: 3' 我们也可以通过在 parital 中通过指定默认参数来绑定 func 中的参数值
f2 = functools.partial(fun, z=3) f2(2, 1) # Output: 'x: 2; y: 1; z: 3' sum_100 = functools.partial(sum, start=100) print(sum_100([1, 2, 3])) #TypeError: sum() takes no keyword arguments sum 函数的说明:
sum(iterable, start=0, /) Return the sum of a 'start' value (default: 0) plus an iterable of numbers When the iterable is empty, return the start value. This function is intended specifically for use with numeric values and may reject non-numeric types. import functools int2 = functools.partial(int, base=2) print(int2('10001')) # Output: '17' int 函数的解释如下:
class int(object) | int(x=0) -> integer | int(x, base=10) -> integer | | Convert a number or string to an integer, or return 0 if no arguments | are given. If x is a number, return x.__int__(). For floating point | numbers, this truncates towards zero. 1 knightdf 2016 年 8 月 11 日 sum(sequence[, start]) -> value |
3 petelin 2016 年 8 月 11 日 via Android sum 函数不接受 start 这个关键字参数,你找的函数解释跟你用的版本不对,或者别的什么的 |
4 zhuangzhuang1988 2016 年 8 月 11 日 python 源码参考这里 https://github.com/python/cpython/blob/2.7/Python/bltinmodule.c#L2307 sum 没有通过关键字获取 start ```python import functools def _sum(seq, start=0): return sum(seq, start) f = functools.partial(_sum, start=100) print f([1,2,3]) ``` 这样解决。。 |
5 eric6356 2016 年 8 月 11 日 我猜你是用了 IPython 之类的看的说明。 IPython 会调用 inspect 去取对象的 signature 。而对于这种 built-in 函数,真正的参数并不像你看到的 signature 那样。还是应当以文档或者源码为准。 |
6 Dimen61 OP 感谢大家,我是在 python3 终端交互下,用 help(sum)查看的函数解释 |