暴躁小熊猫 发表于 2023-6-14 22:06:14

为什么前面两个会报错,而后面一个则不会???

>>> "我叫{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的同学,运气都不会差!!!'

isdkz 发表于 2023-6-14 22:20:15

这个问题的关键在于Python的函数调用规则。在Python中,位置参数必须出现在关键字参数之前。

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

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

这是一个非常基础的Python规则:在函数调用中,位置参数必须在关键字参数之前。如果你违反这个规则,Python解释器就会抛出一个语法错误。

ba21 发表于 2023-6-14 22:21:27

name = "小甲鱼" 指定值的 必须排在后面。

暴躁小熊猫 发表于 2023-6-14 22:34:11

isdkz 发表于 2023-6-14 22:20
这个问题的关键在于Python的函数调用规则。在Python中,位置参数必须出现在关键字参数之前。

在你的第一 ...

谢谢,明白了

sfqxx 发表于 2023-6-14 22:34:33

在使用字符串的`format()`方法进行格式化时,关键点在于对位置参数和关键字参数的使用顺序。错误的语句中出现了位置参数("Python")位于关键字参数(name = "小甲鱼")之后,导致报错。而正确的语句中,位置参数和关键字参数的顺序是正确的,因此没有报错。

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

例子:

"我叫{name},我爱{0},喜欢{0}的同学,运气都不会差!!!".format("python", name="小甲鱼")
结果为:

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

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

求最佳答案{:10_254:}

暴躁小熊猫 发表于 2023-6-14 22:34:41

ba21 发表于 2023-6-14 22:21
name = "小甲鱼" 指定值的 必须排在后面。

谢谢,明白了

歌者文明清理员 发表于 2023-6-14 22:36:27

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

最佳都没了还想回答……

暴躁小熊猫 发表于 2023-6-14 22:37:01

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

谢谢!!!{:7_139:}
页: [1]
查看完整版本: 为什么前面两个会报错,而后面一个则不会???