为什么 print("text" + str(var1) + "more text" + str(var2)) 被描述为“未批准”?

2023-12-31

为什么下面的代码在“Snakes and Coffee”对 Blender 的帖子的评论中被称为“古老的不被批准的打印方法”在python中打印多个参数 https://stackoverflow.com/questions/15286401/print-multiple-arguments-in-python?它与 Python 2 或 Python 3 的后端代码/实现有关吗?

print("Total score for " + str(name) + " is " + str(score))

添加许多字符串不被批准,因为:

  • 与其他替代方案相比,它并不是真正可读。
  • 它不如替代方案有效。
  • 如果你有其他类型,你必须手动调用str在他们。

而且,是的,它真的很旧。 :-)

理论上,字符串相加会创建一个新字符串。所以,假设你添加n字符串,那么你需要创建n-1字符串,但除一个之外的所有这些都被丢弃,因为您只对最终结果感兴趣。 字符串是作为数组实现的,因此您可能会进行大量昂贵的(重新)分配,但没有任何好处。

如果你有一个带有占位符的字符串,它不仅更具可读性(你没有这些+ and str之间),但 python 也可以计算最终字符串的长度,并为最终字符串仅分配一个数组并插入所有内容。

实际上,情况并非如此,因为 Python 会检查字符串是否是中间字符串并进行一些优化。所以它并不像创建那么糟糕n-2不必要的数组。

对于小字符串和/或交互式使用,您甚至不会注意到差异。但其他方式的优点是更具可读性。

替代方案可能是(前两个是从 @MKemps 答案复制的):

  • "Total score for {} is {}".format(name, score)
  • "Total score for %s is %s" % (name, score)(也老了!)
  • "Total score for {name} is {score}".format(name=name, score=score)
  • f"Total score for {name} is {score}"(非常新 - 在 Python 3.6 中引入)

特别是后两个示例表明您甚至可以读取模板字符串而无需插入任何内容。

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

为什么 print("text" + str(var1) + "more text" + str(var2)) 被描述为“未批准”? 的相关文章

  • 导入错误:没有名为 _ssl 的模块

    带 Python 2 7 的 Ubuntu Maverick 我不知道如何解决以下导入错误 gt gt gt import ssl Traceback most recent call last File
  • 如何在 Sublime Text 2 的 OSX 终端中显示构建结果

    我刚刚从 TextMate 切换到 Sublime Text 2 我非常喜欢它 让我困扰的一件事是默认的构建结果显示在 ST2 的底部 我的程序产生一些很长的结果 显示它的理想方式 如在 TM2 中 是并排查看它们 如何在 Mac 操作系统
  • 更改自动插入 tkinter 小部件的文本颜色

    我有一个文本框小部件 其中插入了三条消息 一条是开始消息 一条是结束消息 一条是在 单位 被摧毁时发出警报的消息 我希望开始和结束消息是黑色的 但被毁坏的消息 参见我在代码中评论的位置 插入小部件时颜色为红色 我不太确定如何去做这件事 我看
  • 如何使用 Scrapy 从网站获取所有纯文本?

    我希望在 HTML 呈现后 可以从网站上看到所有文本 我正在使用 Scrapy 框架使用 Python 工作 和xpath body text 我能够获取它 但是带有 HTML 标签 而且我只想要文本 有什么解决办法吗 最简单的选择是ext
  • Spark的distinct()函数是否仅对每个分区中的不同元组进行洗牌

    据我了解 distinct 哈希分区 RDD 来识别唯一键 但它是否针对仅移动每个分区的不同元组进行了优化 想象一个具有以下分区的 RDD 1 2 2 1 4 2 2 1 3 3 5 4 5 5 5 在此 RDD 上的不同键上 所有重复键
  • Python tcl 未正确安装

    我刚刚为 python 安装了graphics py 但是当我尝试运行以下代码时 from graphics import def main win GraphWin My Circle 100 100 c Circle Point 50
  • 将 github 上的包安装到 Spyder 中

    我一直在尝试安装并导入mpl finance来自 github 的包 在我的 Spyder 环境中没有成功 我努力了 pip install e git https github com matplotlib mpl finance git
  • 从 scikit-learn 导入 make_blobs [重复]

    这个问题在这里已经有答案了 我收到下一个警告 D Programming Python ML venv lib site packages sklearn utils deprecation py 77 DeprecationWarning
  • 在循环中每次迭代开始时将变量重新分配给原始值(在循环之前定义)

    在Python中 你使用 在每次迭代开始时将变量重新分配给原始值 在循环之前定义 时 也就是说 original 1D o o o for i in range 0 3 new original 1D revert back to orig
  • 在pyyaml中表示具有相同基类的不同类的实例

    我有一些单元测试集 希望将每个测试运行的结果存储为 YAML 文件以供进一步分析 YAML 格式的转储数据在几个方面满足我的需求 但测试属于不同的套装 结果有不同的父类 这是我所拥有的示例 gt gt gt rz shorthand for
  • Python:字符串不会转换为浮点数[重复]

    这个问题在这里已经有答案了 我几个小时前写了这个程序 while True print What would you like me to double line raw input gt if line done break else f
  • ExpectedFailure 被计为错误而不是通过

    我在用着expectedFailure因为有一个我想记录的错误 我现在无法修复 但想将来再回来解决 我的理解expectedFailure是它会将测试计为通过 但在摘要中表示预期失败的数量为 x 类似于它如何处理跳过的 tets 但是 当我
  • 循环中断打破tqdm

    下面的简单代码使用tqdm https github com tqdm tqdm在循环迭代时显示进度条 import tqdm for f in tqdm tqdm range 100000000 if f gt 100000000 4 b
  • 通过数据框与函数进行交互

    如果我有这样的日期框架 氮 EG 00 04 NEG 04 08 NEG 08 12 NEG 12 16 NEG 16 20 NEG 20 24 datum von 2017 10 12 21 69 15 36 0 87 1 42 0 76
  • 在Python中重置生成器对象

    我有一个由多个yield 返回的生成器对象 准备调用该生成器是相当耗时的操作 这就是为什么我想多次重复使用生成器 y FunctionWithYield for x in y print x here must be something t
  • 设置 torch.gather(...) 调用的结果

    我有一个形状为 n x m 的 2D pytorch 张量 我想使用索引列表来索引第二个维度 可以使用 torch gather 完成 然后然后还设置新值到索引的结果 Example data torch tensor 0 1 2 3 4
  • 从 Python 中的类元信息对 __init__ 函数进行类型提示

    我想做的是复制什么SQLAlchemy确实 以其DeclarativeMeta班级 有了这段代码 from sqlalchemy import Column Integer String from sqlalchemy ext declar
  • 在python中,如何仅搜索所选子字符串之前的一个单词

    给定文本文件中的长行列表 我只想返回紧邻其前面的子字符串 例如单词狗 描述狗的单词 例如 假设有这些行包含狗 hotdog big dog is dogged dog spy with my dog brown dogs 在这种情况下 期望
  • 如何使用google colab在jupyter笔记本中显示GIF?

    我正在使用 google colab 想嵌入一个 gif 有谁知道如何做到这一点 我正在使用下面的代码 它并没有在笔记本中为 gif 制作动画 我希望笔记本是交互式的 这样人们就可以看到代码的动画效果 而无需运行它 我发现很多方法在 Goo
  • 在 Python 类中动态定义实例字段

    我是 Python 新手 主要从事 Java 编程 我目前正在思考Python中的类是如何实例化的 我明白那个 init 就像Java中的构造函数 然而 有时 python 类没有 init 方法 在这种情况下我假设有一个默认构造函数 就像

随机推荐

  • Django Rest Framework - 未提供身份验证凭据

    我正在使用 Django Rest Framework 开发一个 API 我正在尝试列出或创建一个 订单 对象 但是当我尝试访问控制台时出现以下错误 detail Authentication credentials were not pr
  • 获取最高分配的文件描述符

    是否有一种可移植的方法 POSIX 来获取当前进程的最高分配文件描述符编号 例如 我知道有一种很好的方法可以获取 AIX 上的号码 但我正在寻找一种可移植的方法 我问的原因是我想关闭所有打开的文件描述符 我的程序是一个以 root 身份运行
  • 在 xib 的自定义单元上设置 IBAction?

    我在 xib 中创建了一个自定义单元格 在 iOS 6 中使用 Storyboard 但为单元格创建了单独的 xib 现在我尝试将扬声器按钮连接到 UITableViewController 子类中的 IBAction 我在 viewDid
  • .NET C#:如何在 AJAX 调用期间处理表单身份验证过期

    对于上下文 我在 web config 中设置了表单身份验证超时值 并且正在使用 ASP NET MVC 1 我认为将我的问题表述为 2 个用例可能是最简单的 第一个用例是在没有身份验证的情况下发生的情况超时 第二个是身份验证超时会发生什么
  • 如何在 JSF 中显示我的应用程序的错误?

    在我的 JSF Facelets 应用程序中 这是我的表单的一部分的简化版本
  • 如何使用类似于beanstalkd的cli来监控Redis作为队列引擎?

    背景 We used Laravel 队列 https laravel com docs 5 1 queues在之上豆茎 https github com kr beanstalkd在两个 ec2 实例上 在负载均衡器后面 随着系统的扩展
  • C# 超时后自动释放锁

    有谁知道实现锁定的最佳方法是什么 以便在X秒后它会自动释放 假设您正在寻找在 X 秒内触发的事件 那么我认为当前没有任何核心 Mutex 对象提供您正在寻找的功能类型 您可以通过使用 System Timer 在 X 秒内触发并释放锁定的互
  • Flutter:将文件(图像)裁剪为圆形

    我正在尝试在颤动中裁剪文件 图像文件 这就是我所拥有的 这就是我想要在裁剪后得到的 带有圆形裁剪的 png 重要的是该文件是 png 因此它没有白色边框 有支持这个的包吗 您可以使用盒子装饰 https api flutter dev fl
  • 将非常大的数字从二进制转换为十进制并打印

    我知道如何将二进制转换为十进制 我至少知道两种方法 表和幂 我想将二进制转换为十进制并打印该十进制 而且 我对这个 小数 不感兴趣 我只想打印它 但是 正如我上面所写 我只知道两种将二进制转换为十进制的方法 并且它们都需要加法 因此 我正在
  • 将预测映射回 ID - Python Scikit Learn DecisionTreeClassifier

    我有一个具有唯一标识符和其他功能的数据集 看起来像这样 ID LenA TypeA LenB TypeB Diff Score Response 123 456 51 M 101 L 50 0 2 0 234 567 46 S 49 S 3
  • 如何防止 LaTeX 在段落之间填充空格,以便下一节从下一页的顶部开始?

    我有一份两栏的论文 空间限制非常严格 我刚刚查看了手稿的最后一个版本 发现上半部分包含一个图形 如预期的那样 但在下半部分 段落之间有很多垂直空间 足以再挤 10 行 并且 LaTeX可能添加了它 以便在下一页的开头 一个新的编号部分将从页
  • 默认的 mb_internal_encoding() 值从何而来?

    如果我要编写一个新的 php 文件 并包含echo current mb internal encoding mb internal encoding 输出值从哪里来 它是如何 决定 如何管理的 背景 我编写了一个网络应用程序 我以为我已经
  • 将 JavaScript 模块或库导入 TypeScript

    多年来我一直在为同样的问题而苦苦挣扎 我似乎无法弄清楚如何可靠地使用 TypeScript 中的 JavaScript 库 我似乎是偶然让它工作的 然后继续前进 多年来都没有重新访问这些代码 直到外部变化导致破坏 就像今天我更新 VS 20
  • webRTC 数据通道消息的最大大小是多少?

    我正在尝试 webRTC 似乎每条消息中可以发送的字节数有任意限制 This guy https github com rohansingh rtc p2p我使用的示例选择了 100 加上一些 字节的限制 在我的测试中 它似乎接近 200
  • 为什么 Python 的 eval() 拒绝这个多行字符串,我该如何修复它?

    我正在尝试评估以下制表符缩进字符串 for index in range 10 os system echo str index 我得到 出现错误 语法无效 第 1 行 它在抱怨什么 我是否需要缩进以匹配 eval 语句 或者将其写入字符串
  • WPF 沿路径绘制箭头

    只是想知道我如何沿着路径绘制箭头 路径将改变方向并经过几个不同的点 箭头旨在向用户显示他们需要沿着路径行进的方向 我尝试过使用画笔 但它不起作用 因为我需要箭头来沿着路径调整它们的方向 See 路径动画概述 http msdn micros
  • 矢量push_back移动实现

    在我的教科书中 向量push back移动实现的实现是 void push back Object x if theSize theCapacity reserve 2 theCapacity 1 objects theSize std m
  • 何时处置带有子任务的 System.Threading.Task?

    我有一个启动多个子任务的任务 例如 任务 A 创建 B C D E F 我还创建了一个System Threading Timer每 10 秒轮询一次数据库以检查计划项目是否已按请求取消 如果是 则设置CancellationTokenSo
  • Java 8 和 Spring 4:在界面中使用自动装配

    Java 8 添加了一个新功能 通过该功能我们可以在接口中提供方法实现 Spring 4中有没有什么方法可以让我们在接口中注入可以在方法体内使用的bean 下面是示例代码 public interface TestWiring Autowi
  • 为什么 print("text" + str(var1) + "more text" + str(var2)) 被描述为“未批准”?

    为什么下面的代码在 Snakes and Coffee 对 Blender 的帖子的评论中被称为 古老的不被批准的打印方法 在python中打印多个参数 https stackoverflow com questions 15286401