首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Python中仅将一个变量传递给函数

在Python中仅将一个变量传递给函数
EN

Stack Overflow用户
提问于 2017-03-11 17:59:03
回答 3查看 700关注 0票数 2

假设我有一个函数

代码语言:javascript
复制
def f(x,y):
    return x+y

我想创建一个函数,它返回一个传递了特定变量的函数:

代码语言:javascript
复制
def G(f,n,q):  #a function in which the n-th variable of function f is passed the value q
    return ??

问题是:我应该如何定义G

例如,G(f,0,1)应返回函数f,其中向变量0传递的值为1。换句话说,G(f,0,1)的行为应该像g一样,我的定义是

代码语言:javascript
复制
def g(x):
    return f(1,x)
EN

回答 3

Stack Overflow用户

发布于 2017-03-11 18:08:51

在这种情况下,您可以构造一个构造函数的函数。像这样:

代码语言:javascript
复制
def G(f,n,q):
    def h(*args):
        ls = list(args)
        ls.insert(n,q)
        return f(*ls)
    return h

因此,您构造了一个以任意数量的元素*args作为输入的函数h。然后将其转换为list(..),这样就可以更改列表。接下来,将给定的参数q作为索引n插入到列表中,并将带有星号的列表传递给给定的函数f

票数 0
EN

Stack Overflow用户

发布于 2017-03-11 18:08:51

下面是一个更小、更简单、相关的工作示例。通常,您可能希望阅读有关python装饰器和分部函数的内容。

代码语言:javascript
复制
>>> def power(x):
...     def foo(y):
...         return y**x
...     return foo
...
>>> square = power(2)
>>> cube = power(3)
>>> square(2)
4
>>> square(3)
9
>>> cube(2)
8
>>> cube(3)
27
>>> 
票数 0
EN

Stack Overflow用户

发布于 2017-03-11 18:12:36

您可以查看functools模块。

例如,使用partial方法可以执行以下操作:

代码语言:javascript
复制
from functools import partial
def G(f, n, q):
  return partial(f, n=q)

这将用q替换名为n的关键字参数

您也可以替换位置参数,但它们必须按顺序排列:

代码语言:javascript
复制
from functools import partial
def G(f, n, q):
  return partial(f, q)

这会将第一个参数替换为q

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42733803

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档