如何在Python中将函数作为函数参数传递

2023-11-23

这是我目前拥有的并且运行良好:

def iterate(seed, num):
    x = seed
    orbit = [x]
    for i in range(num):
        x = 2 * x * (1 - x)
        orbit.append(x)
    return orbit

现在,如果我想将第 5 行的迭代方程更改为 x = x ** 2 - 3,我必须使用除第 5 行之外的所有相同代码创建一个新函数。如何创建一个更通用的函数可以有一个函数作为参数的函数吗?


功能有一等公民在Python中。您可以传递函数作为参数:

def iterate(seed, num, fct):
#                      ^^^
    x = seed
    orbit = [x]
    for i in range(num):
        x = fct(x)
        #   ^^^
        orbit.append(x)
    return orbit

在您的代码中,您将传递所需的函数作为第三个参数:

def f(x):
    return 2*x*(1-x)

iterate(seed, num, f)
#                  ^

Or

def g(x):
    return 3*x*(2-x)

iterate(seed, num, g)
#                  ^

Or ...


如果您不想每次都命名新函数,则可以选择传递匿名函数(即:lambda) 反而:

iterate(seed, num, lambda x: 3*x*(4-x))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在Python中将函数作为函数参数传递 的相关文章

随机推荐

  • Firebase 真正的离线功能

    我正在尝试了解 Android 上的 Firebase 离线功能实际上能达到什么程度 据我了解 应该可以使数据库 持久化 FirebaseDatabase getInstance setPersistenceEnabled true 文档内
  • 我应该将 go depvendor/ 添加到 .gitignore 吗? [复制]

    这个问题在这里已经有答案了 我应该添加go dep vendor 文件夹到 gitignore 我现在有vendor in gitignore 所以每次部署都会调用dep ensure github gitignore Go gitigno
  • 滤波器阵列 - 奇偶

    如何过滤掉具有奇数或偶数索引号的数组条目 Array 0 gt string1 1 gt string2 2 gt string3 3 gt string4 就像 我希望它从数组中删除 0 和 2 条目 或者说我有 0 1 2 3 4 5
  • 良好的线程 C++ 库

    我更喜欢仅基于 pthreads 的库 对于线程来说 什么是好的 C 库 怎么样增强线程 Boost Thread 允许使用 多线程执行 可移植 C 代码中的共享数据 它 提供类和函数 管理线程本身 与其他人同步数据 线程之间或提供 特定于
  • Windows API 保留参数

    我想知道为什么有些函数有一些参数由于 保留参数 而必须设置为 NULL 例如 LONG WINAPI RegQueryValueEx in HKEY hKey in opt LPCTSTR lpValueName reserved LPDW
  • CSS 子选择器 (>) 不适用于 IE

    下面的 CSS 在 Firefox 下运行良好 但在 IE 浏览器下不起作用 为什么 另外 如何才能只让父元素正下方的元素受 CSS 影响 CSS box font 24px box gt div font 18px box gt div
  • 使用 cabal 安装库时无法解决依赖关系

    我尝试在 Window 10 上使用 cabal 安装库的每一次努力都导致了同样的错误 cabal install gtk cabal exe Could not resolve dependencies 0 trying parconc
  • 如何使用react-native更改Textinput中的电话号码格式

    i want the phone number work Phone format to be as shown in the below image using react native can any one help how to w
  • iOS 上的 Google Analytics:未跟踪事件

    我按照 Google 指南中提供的说明将 Google Analytics SDK 添加到我的项目中 但是 当我尝试跟踪某些事件时 这是调试输出 BOOL application UIApplication application didF
  • 从文本中获取 url [重复]

    这个问题在这里已经有答案了 可能的重复 包含查询字符串的 URL 正则表达式 我有一条短信或消息 嘿 尝试这个http www test com test aspx id 53 我们的要求是从文本中获取链接 我们正在使用以下代码 List
  • Meteor :等待所有模板渲染完毕

    我有以下模板代码
  • 为什么 IEnumerable.Select() 在两种情况之一中起作用?无法从使用情况推断

    我明白了错误信息 The type arguments for method System Linq Enumerable Select
  • 在ggplot箱线图中显示填充组内的单独平均值

    我有一个使用 3 个类别的数据的分组箱线图 一个类别设置为箱线图的 x 轴 另一个类别设置为填充 最后一个类别设置为分面类别 我想显示每个填充组的平均值 但使用stat summary只给出 x 轴类别的平均值 而不分离填充的平均值 这是当
  • 在 Google BigQuery 中创建 UUID 列

    谷歌大查询不支持UUID作为数据类型 那么 哪个选项更好地存储它 STRING 格式为 8 4 4 4 12 的字符串 BYTES 16字节 128位 的数组 编辑 BigQuery 现在支持函数称为GENERATE UUID 这会返回一个
  • Streamwriter 与 StringBuilder

    哪一种效果更好或更正确 是不是更好地创建一个对象StreamWriter类并在方法中频繁使用它并最终处理它 还是使用来自的对象更好StringBuilder然后从中创建一个对象StreamWriter并立即处置 1 var Write ne
  • 无法使用 Ctrl-C 终止 Python 脚本

    我正在使用以下脚本测试 Python 线程 import threading class FirstThread threading Thread def run self while True print first class Seco
  • JavaScript 中的解构赋值

    正如在 JavaScript 1 7 的 Mozilla 变更日志中可以看到的 他们添加了解构赋值 遗憾的是我不太喜欢这种语法 为什么要写两次 a 和 b var a b a b f 像这样的事情会好得多 var a b f 那仍然是向后兼
  • 用于检测模板特化的模板元函数

    灵感来自这个问题 我想知道是否可以引入一些编译时检查来检测是否有两个给定的模板实例化 template
  • 如何在 sails.js 中配置 https

    我正在尝试设置本地 HTTPS 服务器以在 Sails js 中进行测试 我无法找到任何指针如何在 sails js 中执行此操作 对于快递来说 var express require express var https require h
  • 如何在Python中将函数作为函数参数传递

    这是我目前拥有的并且运行良好 def iterate seed num x seed orbit x for i in range num x 2 x 1 x orbit append x return orbit 现在 如果我想将第 5