我是python的新手,我发现"偶数函数是对象"的东西非常酷,所以我只是在PyShell中使用函数.以下代码工作正常.
def add_num(a,b):
c = a + b
return c
x = add_num
x(5,2)
Run Code Online (Sandbox Code Playgroud)
我想知道在分配x = add_num时是否可以存储参数.因此,无论何时调用x(),它都会添加a和b(此处为5和2)并返回结果.x = add_num(5,2)将不起作用,因为add_num(5,2)实际调用该函数并返回7.
小智 5
本partial该在功能functools模块(文件)可以创建一个新的函数对象行为像你想要的.
import functools
def add_num(a, b):
c = a + b
return c
x = functools.partial(add_num, 5, 2)
print(x()) # prints 7
Run Code Online (Sandbox Code Playgroud)
您也可以只指定一个参数,并在调用"partial"函数时提供另一个参数:
y = functools.partial(add_num, 5)
print(y(6)) # prints 11
Run Code Online (Sandbox Code Playgroud)
它也适用于关键字参数:
z = functools.partial(add_num, b=5)
print(z(10)) # prints 15
Run Code Online (Sandbox Code Playgroud)
正如评论中所建议的,另一种选择是使用lambda表达式(文档),这只是创建新函数的简写.
f = lambda: add_num(25, 30)
print(f()) # prints 55
# the lambda definition is equivilent to
def f():
return add_num(25, 30)
Run Code Online (Sandbox Code Playgroud)
这是也有可能像你在问题中显示修改原有的功能,但在大多数情况下,这会被认为是不好的风格.如果你真的想要,可以通过添加参数作为.func_defaults函数对象的属性(.__defaults__在旧版本的Python中调用; 文档)来实现.
add_num.func_defaults = (1, 2)
print(add_num()) # prints 3
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
449 次 |
| 最近记录: |