鱼C论坛

 找回密码
 立即注册
查看: 2090|回复: 7

[已解决]为什么前面两个会报错,而后面一个则不会???

[复制链接]
发表于 2023-6-14 22:06:14 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
>>> "我叫{name}, 我爱{1}, 喜欢{1}的同学,运气都不会差!!!".format(name = "小甲鱼", "python")
SyntaxError: positional argument follows keyword argument

>>> "我叫{name}, 我爱{0}, 喜欢{0}的同学,运气都不会差!!!".format(name = "小甲鱼", "python")
SyntaxError: positional argument follows keyword argument

>>> "我叫{name}, 我爱{0}, 喜欢{0}的同学,运气都不会差!!!".format("Python", name = "小甲鱼")
'我叫小甲鱼, 我爱Python, 喜欢Python的同学,运气都不会差!!!'
最佳答案
2023-6-14 22:20:15
这个问题的关键在于Python的函数调用规则。在Python中,位置参数必须出现在关键字参数之前。

在你的第一个和第二个例子中,你试图在关键字参数( name = "小甲鱼" )后面使用位置参数( "python" )。这是不被允许的,因此你得到了一个 SyntaxError 错误。

在第三个例子中,你正确地将位置参数( "Python" )放在了关键字参数( name = "小甲鱼" )之前。因此,这个调用是有效的,没有报错。

这是一个非常基础的Python规则:在函数调用中,位置参数必须在关键字参数之前。如果你违反这个规则,Python解释器就会抛出一个语法错误。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-6-14 22:20:15 | 显示全部楼层    本楼为最佳答案   
这个问题的关键在于Python的函数调用规则。在Python中,位置参数必须出现在关键字参数之前。

在你的第一个和第二个例子中,你试图在关键字参数( name = "小甲鱼" )后面使用位置参数( "python" )。这是不被允许的,因此你得到了一个 SyntaxError 错误。

在第三个例子中,你正确地将位置参数( "Python" )放在了关键字参数( name = "小甲鱼" )之前。因此,这个调用是有效的,没有报错。

这是一个非常基础的Python规则:在函数调用中,位置参数必须在关键字参数之前。如果你违反这个规则,Python解释器就会抛出一个语法错误。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-6-14 22:21:27 | 显示全部楼层
name = "小甲鱼" 指定值的 必须排在后面。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-6-14 22:34:11 | 显示全部楼层
isdkz 发表于 2023-6-14 22:20
这个问题的关键在于Python的函数调用规则。在Python中,位置参数必须出现在关键字参数之前。

在你的第一 ...

谢谢,明白了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-6-14 22:34:33 | 显示全部楼层
在使用字符串的`format()`方法进行格式化时,关键点在于对位置参数和关键字参数的使用顺序。错误的语句中出现了位置参数("Python")位于关键字参数(name = "小甲鱼")之后,导致报错。而正确的语句中,位置参数和关键字参数的顺序是正确的,因此没有报错。

具体来说,`format()`方法可以使用大括号 `{}` 来指定传递的参数,并通过位置索引或关键字名称进行匹配。当同时使用位置参数和关键字参数时,要将位置参数放在关键字参数之前,否则会导致语法错误。

例子:
"我叫{name},我爱{0},喜欢{0}的同学,运气都不会差!!!".format("python", name="小甲鱼")
结果为:
'我叫小甲鱼,我爱python,喜欢python的同学,运气都不会差!!!'
请注意,参数的位置索引从0开始。在这个例子中,"python"作为第一个位置参数,对应到字符串中的 {0}。而关键字参数`name`对应到字符串中的`{name}`。

希望能够帮到你!如果还有其他问题,请随时问。

求最佳答案
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-6-14 22:34:41 | 显示全部楼层
ba21 发表于 2023-6-14 22:21
name = "小甲鱼" 指定值的 必须排在后面。

谢谢,明白了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-6-14 22:36:27 | 显示全部楼层
sfqxx 发表于 2023-6-14 22:34
在使用字符串的`format()`方法进行格式化时,关键点在于对位置参数和关键字参数的使用顺序。错误的语句中出 ...

最佳都没了还想回答……
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-6-14 22:37:01 | 显示全部楼层
sfqxx 发表于 2023-6-14 22:34
在使用字符串的`format()`方法进行格式化时,关键点在于对位置参数和关键字参数的使用顺序。错误的语句中出 ...

谢谢!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-26 22:00

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表