You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何Python函数中首个字符串变量打印无前置空格?

问题原因与解决方法

问题原因

你遇到的空格差异是Python print() 函数的默认行为导致的:当你向print()传入多个参数时,函数会自动在相邻参数之间插入一个空格作为分隔符(默认参数sep=' ')。

看你的代码执行逻辑:

print(name, surname, age, WasHere)
  • 第一个参数name的值是'Name: John\n',因为是首个参数,前面没有其他参数,所以直接输出,开头没有额外空格,结尾的\n让光标换行。
  • 第二个参数surname是后续参数,print()会在它前面自动添加默认的空格分隔符,所以输出时Surname:前面多了一个空格;age、wasHere同理,都是因为作为后续参数被自动加了前置空格。

另外提个代码里的小错误:变量名WasHere应该是小写的wasHere(Python变量名区分大小写),当前代码运行会报NameError,你实际运行的应该是修正过变量名的版本。

解决方法

有两种常用方式消除这个差异:

  1. 拼接所有字符串后再打印
    把多个字符串变量拼接成一个整体,作为单个参数传给print(),这样就不会触发多参数的分隔符逻辑:
def Patient1():
    name = 'Name:' + ' John\n'
    surname = 'Surname: ' + 'Doe\n'
    age = 'Age : '+ str(20) + ("\n")
    wasHere = 'Was here before?: ' + 'Yes\n'
    print(name + surname + age + wasHere)  # 拼接成单个字符串
  1. 修改print()的分隔符
    显式指定sep=''(空字符串),取消默认的空格分隔:
def Patient1():
    name = 'Name:' + ' John\n'
    surname = 'Surname: ' + 'Doe\n'
    age = 'Age : '+ str(20) + ("\n")
    wasHere = 'Was here before?: ' + 'Yes\n'
    print(name, surname, age, wasHere, sep='')  # 指定分隔符为空

内容的提问来源于stack exchange,提问作者NotoriCode

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 05:25:16