Python默认参数评估[重复]

2024-03-28

我正在阅读 Python 文档版本 2.7.10 中的 python 教程,我遇到了类似的内容。

Code

def fun1(a,L=[]):
    L.append(a)
    return L

print fun1(1)
print fun1(2)
print fun1(3)

def fun2(a,L = None):
    if L is None:
        L=[]
    L.append(a)
    return L

print fun2(1)
print fun2(2)
print fun2(3)

Output

[1]
[1, 2]
[1, 2, 3]
[1]
[2]
[3]

Process finished with exit code 0

If the L=[]在第一个函数中fun1()仅被调用一次,输出fun1()很好。但那为什么L=None每次都接到电话fun2().


L=[]在函数声明中,Python 本质上是这样做的:

  • 该函数有一个名为L
  • 它的默认参数是[],让我们设置这个特定的[]放在一边并在没有传递参数的任何时候使用它L
  • 每次调用函数时,创建一个变量L,并将其分配给传递的参数或我们之前预留的值

So, the []部分执行一次,这会创建一个列表对象,该对象被搁置并保留,这就是为什么如果您修改它,它会累积更改的原因。完全相同的事情发生在None, 然而None没有被修改,也不是可变的,所以你不会看到任何奇怪的副作用。None仍然只被“执行”一次,并且那个特定的None值就像列表一样被搁置,只是你没有对它做任何事情None价值本身。

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

Python默认参数评估[重复] 的相关文章

  • 配置 PIP 以在代理后面工作

    我已经安装了 python 3 4 3 附带pip 我想从代理后面使用 pip 所以我执行了以下操作 Created C Users foo pip pip ini并添加了代理配置部分 proxy export http proxy my
  • 来自多元 t 分布的样本 python

    我想知道Python中是否有一个从多元学生t分布中采样的函数 我有包含 14 个元素的均值向量 14x14 协方差矩阵和自由度 我想从这个 t 分布中采样一个向量 对于一维情况 我使用 stats t rvs df loc scale 并且
  • Python 错误:将 statsmodels 与一行数据一起使用时,对象的 len() 未调整大小

    我可以使用 statsmodel 的 WLS 加权最小二乘回归 http statsmodels sourceforge net devel generated statsmodels regression linear model WLS
  • 如何将数据从 JavaScript 发送到 Python

    我正在 jinja2 和 python2 7 上使用 GAE 进行 Web 开发 我可以从Python获取数据 但我无法将数据从 JavaScript 发送到 Python 这是 JavaScript 代码 function toSave
  • python:numpy 运行脚本两次

    当我将 numpy 导入到 python 脚本中时 该脚本会执行两次 有人可以告诉我如何阻止这种情况 因为我的脚本中的所有内容都需要两倍的时间 这是一个例子 usr bin python2 from numpy import print t
  • 统计Sweep算子的Python实现

    我正在学习一些用书中缺失的数据进行统计的技术 缺失数据的统计分析作者 利特尔和鲁宾 对于处理单调无响应数据来说 一个特别有用的函数是扫频操作员 详情见第 148 151 页 我知道 R 模块gmm有swp函数可以做到这一点 但我想知道是否有
  • LogRecord 没有预期的字段

    在使用 logging 模块的Python中 文档承诺LogRecord实例将具有许多属性 这些属性在文档中明确列出 然而 情况似乎并不总是如此 当我不使用日志记录模块的 basicConfig 方法时 下面的程序显示属性 asctime
  • pandas groupby 并转换为 json 列表

    我有一个如下所示的 pandas 数据框 idx f1 f2 f3 1 a a b 2 b a c 3 a b c 87 e e e 我需要将其他列转换为基于索引列的字典列表 所以 最终结果应该是 idx features 1 f1 a f
  • 错误:tensorflow:无法匹配检查点的文件

    我正在训练一个张量流模型 在每个时期之后我都会保存模型状态并腌制一些数组 到目前为止 我的模型执行了 2 个纪元 并且保存状态的文件夹包含以下文件 checkpoint model e knihy preprocessed txt e0 c
  • 如何在solidpython中设置特殊变量$fa、$fs、$fn

    in 上一个线程 https stackoverflow com questions 54040390 how to save data in stl file after python solid processing显示了如何通过 So
  • Python:两个列表之间的成对比较:列表 a >= 列表 b?

    如果我想检查列表中的所有元素 a 1 2 3 6 大于或等于另一个列表中对应的元素 b 0 2 3 5 如果 a i gt b i 对于所有i的 则返回 true 否则返回 false 这有逻辑功能吗 比如a gt b 谢谢 你可以这样做
  • 在python中检测按下了哪些键

    我需要知道现在按下的是哪个键 我不想捕获一些特定的按键来触发事件或类似的事情 我想知道现在按下了哪些键并显示它们的列表 我还需要捕获特殊键 如 F1 F12 shift alt home windows 等 基本上是键盘上的所有键 我如何在
  • 如果任何单元测试失败,如何使 Python 的覆盖率工具失败?

    我想使用 shell 脚本来确保我的单元测试通过and我的代码有足够的测试覆盖率 我只想运行我的测试代码once 我希望我可以通过coverage https coverage readthedocs io 工具和单次运行的工具 如果一项或
  • AppEngine 警告 - OpenBLAS 警告 - 无法确定该系统上的 L2 缓存大小

    我尝试在 GC AppEngine 上部署应用程序 部署过程中没有错误 但应用程序无法运行 仅显示加载页面 日志中唯一一个奇怪的原始日志 OpenBLAS WARNING could not determine the L2 cache s
  • Python:Factory Boy 生成对象创建时指定长度的列表

    我正在尝试使用 Factoryboy 在创建时指定长度的对象中创建一个列表 我可以创建列表 但由于提供的长度 大小的惰性性质 每次尝试创建具有指定长度的列表都会导致问题 这是我到目前为止所拥有的 class FooFactory facto
  • 启动客户端时,代码要求提供电话/机器人令牌

    使用 Telethon 库运行我的第一个代码时 它要求提供机器人令牌 这是实际的代码 from telethon import TelegramClient events sync api id 1234567 api hash xxxxx
  • 内置模块位于哪里?

    我尝试查找列出的所有目录sys path但我找不到任何builtins py文件 那么它在哪里呢 从字面上看 该模块内置于 python 解释器中 gt gt gt import builtins gt gt gt builtins
  • 如何将动态数据传递给装饰器

    我正在尝试编写一个基本的 CRUD 控制器类来执行以下操作 下列的 class BaseCrudController model field validation template dir expose self template dir
  • 如何通过解析导入来组合并获取单个 Python 文件

    我正在尝试获取单个 Python 文件作为输出 我有一个 Python 脚本 其中有多个此类导入 from that import sub 导入来自所有本地模块 而不是来自系统或 Python 库 有什么方法可以解决这些问题并获得一个完整的
  • 如何使用多阶段构建减小 python (docker) 图像大小?

    我正在寻找一种使用 python 和 Dockerfile 创建多阶段构建的方法 例如 使用以下图像 第一张图片 安装所有编译时要求 并安装所有需要的 python 模块 第二张图片 将所有已编译 构建的包从第一个映像复制到第二个映像 而不

随机推荐

  • 检索早于提要中包含的 RSS 帖子

    创建 RSS 阅读器时 您可以下载 RSS 提要链接指向的 XML 格式文档 并且可以手动解析它或使用 SyndicateFeed 命名空间中的功能 因此 如果我们以 Scott Guthrie 的博客为例 您下载 RSS feed 文档h
  • 将 Highcharts 最大 Y 值设置为精确值而不进行四舍五入

    每次我在 Highcharts 中设置最小值和最大值时 我都不会得到具有我发送的精确最小值和最大值的图表 但总是有些接近的值 似乎 Highcharts 正在为轴选择一个间隔范围 如果我的最大值不符合正确的间隔 它就会被忽略或四舍五入 例如
  • 防止 VS Code IntelliSense 在函数名称后插入 ={}

    自上次 Visual Studio Code 更新以来 我在 IntelliSense 自动完成方面遇到了问题 一般来说 如果我想将函数设置为 prop 这是此问题最常见的用例 那么 VS Code 不只是插入函数名称 而是添加 括号 那么
  • 如何在没有 jQuery 的情况下模拟 ajaxStart 和 ajaxStop?

    我一直在查看 jQuery 代码 但它有点庞大 这是一件容易的事吗 知道怎么做吗 我想要这样做的原因是因为我不想将它用于网页 而是用于 C 应用程序 该应用程序需要知道何时有 ajax 活动在网页浏览器 http msdn microsof
  • 如何使用php使用多个数据库?

    我在互联网上阅读了多个问题 包括这个堆栈溢出问题 https stackoverflow com questions 274892 how do you connect to multiple mysql databases on a si
  • D3.js - 如何添加具有默认滚轮鼠标缩放行为的缩放按钮

    因此 我使用默认的 d3 behavior zoom 获得了带有鼠标缩放的世界地图 并进行了限制以防止地图被完全拖出页面 开始工作时很痛苦 但现在可以了 我现在的问题是 这个项目还需要界面中无用的缩放 和 按钮 并且我找不到具有两种缩放类型
  • 使用 JQuery 进行本地化?

    我不知道如何使用 JQuery 处理本地化 我想设置一个innerHTML使用德语文本 但如果浏览器配置为使用英语 那么我想设置英语文本 在 PHP 中 我使用 gettext 来完成此类操作 但是如何在 JavaScript jQuery
  • Automapper:检查 MapFrom 中的 null

    使用版本 4 制作地图时如何检查 null 我尝试过 Value 但那不存在于Null Mapper CreateMap
  • 我应该如何在 Java 中为 Android 手机实现准确的音高检测?

    我想开发一个应用程序 需要通过 Android 手机的麦克风对乐器进行精确的音高检测 我读到的大多数建议都涉及使用快速傅里叶变换 FFT 但他们提到它在准确性和处理能力方面存在问题 考虑到它应该在智能手机上顺利运行 一个答案建议误差幅度为
  • net-snmp解析代码,如何解析MIB?

    我在学习代码库 解析MIB In parse c and parse h代码保留一个哈希桶 indexed bucket tree list 还有一个树结构 其中包含一个指向的next指针Next node in hashed list o
  • a*b* 是正则吗?

    I know anbn for n gt 0 is not regular by the pumping lemma but I would imagine a b to be regular since both a b don t ha
  • .NET Framework 上的 System.Numerics.Vector 初始化性能

    System Numerics Vector 为 NET Core 和 NET Framework 带来了 SIMD 支持 它适用于 NET Framework 4 6 和 NET Core Baseline public void Sim
  • Google Apps 脚本是否支持外部 IDE?

    我正在使用 Google Apps 脚本 想知道是否可以使用 Google 提供的编辑器之外的任何类型的编辑器 我购买了 Sublime Text 并且想使用它 Google 提供的那个很恶心 文本很小 尽管我有一个巨大的屏幕和语法颜色 我
  • Android 单选按钮

    我在 Android 中有一个单选按钮组 看起来像 选择颜色 Red Blue Orange Green 我需要选择单选按钮及其值 我在 radiogroup 中以这种方式有 4 个单选按钮rg rb1a RadioButton findV
  • Chrome CLI 的参数 --virtual-time-budget 的真正含义是什么?

    我知道该论点的文档 virtual time budget 在源中 https cs chromium org chromium src headless app headless shell switches ccChromium 但我觉
  • Zend Framework 3 中的 GetServiceLocator

    早上好 我一直在学习使用框架 Zend Framework 进行编程 根据我过去的经验 我使用的是骨架应用程序 v 2 5 也就是说 我过去开发的所有模块都围绕 ServiceManager 的 servicelocator 工作 有没有办
  • 如何在Android中的WebView中永久突出显示文本?

    我正在为 Android 手机开发 ePUB 阅读器 我可以使用 WebView 和 ClipBoardManager 将文本复制到 ClipBoard 但我真正想做的是永久突出显示该选择 我看到一些文章 他们建议让 WebView 处于选
  • Windows 客户端(而非 Web 应用程序)打印的最佳方式?

    从 c net 打印内容的最佳方法是什么 问题涉及单页以及包含大量页面的报告 如果能获得最常见的打印库的列表 其中包含每个库的主要功能和陷阱 那就太好了 更新 适用于标准 Windows 客户端 或服务器 不适用于网络应用程序 对于报告 我
  • 从数组和频率创建哈希

    我有一个数组 1 2 4 5 4 7 我想找到每个数字的频率并将其存储在哈希中 我有这段代码 但它返回NoMethodError undefined method for nil NilClass def score array hash
  • Python默认参数评估[重复]

    这个问题在这里已经有答案了 我正在阅读 Python 文档版本 2 7 10 中的 python 教程 我遇到了类似的内容 Code def fun1 a L L append a return L print fun1 1 print f