Python新手使用format()函数时遭遇KeyError错误求助
解决Python format()的KeyError问题
嘿,我来帮你揪出这个错误的根源~你的代码里有两个小问题导致了KeyError:
1. 占位符里多余的空格
你字符串里写的是{ age }(注意age前后的空格),Python的format()会把这个带空格的' age '当作一个键名来找对应的参数,但你传的是变量age,两者完全不匹配,自然就抛出KeyError了。
2. 占位符类型和传参方式不匹配
就算你把空格去掉写成{age},直接用format(age)还是会有问题——因为{age}是命名占位符,需要用关键字参数传递,比如format(age=age);而format(age)这种是位置传参,对应的占位符应该是{0}(第一个位置的参数)。
给你几种正确的写法:
写法一:用命名占位符+关键字参数
def hello( name="Sean", age=0 ): return 'Hello, ' + name + " you are {age} years old".format(age=age) sentence1 = hello( 'Mark', 17 )
写法二:用位置占位符+位置传参
def hello( name="Sean", age=0 ): return 'Hello, ' + name + " you are {0} years old".format(age) sentence1 = hello( 'Mark', 17 )
写法三:用更简洁的f-string(Python 3.6+支持)
这是现在最推荐的写法,代码更直观,不容易出错:
def hello( name="Sean", age=0 ): return f'Hello, {name} you are {age} years old' sentence1 = hello( 'Mark', 17 )
这样修改后,代码就能正常运行啦~
内容的提问来源于stack exchange,提问作者GTS Joe
相关产品推荐
相关产品推荐

