|
发表于 2022-9-11 18:50:18
|
显示全部楼层
你已经知道了- c = {"吕布":99, "关羽":90, "刘备":60}
复制代码 这行代码是正确的,这就说明Python的映射类型支持用数字作为键。
以下是详细解释:
先来看Python抛出的错误类型,SyntaxError,也就是语法错误。具体错误在于把数字当作了参数名。
Python规定,调用函数或者调用类只有两种传递参数的方式,假设有如下函数- def fn(a, b, c):
- # 打印参数a、b、c的值
- print('a = {}, b = {}, c = {}'.format(a, b, c))
复制代码
先来看第一种方式,按照从左往右的位置关系依次传值:直接把三个值11、233、666按照从左往右的位置关系依次传递给参数a、参数b、参数c。所以,最后的输出为。这种按照位置传递的参数叫做位置参数。
再来看第二种方式,通过等号直接给指定的参数传值:可以看到我们使用等号给指定的参数传值。如此一来即便这次调用函数时参数的顺序发生了改变结果也是一样的,输出还是。这种通过等号给指定参数传值的方式叫做关键字参数。
以上就是Python允许的两种调用类或者函数的语法。再来看你的错误,99=“吕布",这句话的意思是把字符串吕布传给99,但是99本身也是一个有效的值不是参数名,所以引发了语法错误。
从另外一个角度来看,上面的例子中我们之所以可以写成a=11这样的形式是因为 我们定义函数时就存在名为a的参数,可是无论如何我们都不能用真实的值当作参数名,例如我们不能把99当作参数名来使用。既然定义的时候都没有名为99的参数,那么99="吕布"这种形式就更错误了。
最后的补充:
1. 位置参数与关键字参数都是针对调用函数或者类时的语法;
2. 以上介绍的两种调用形式可以混合使用,但是位置参数必须靠前,例如fn(11, c= 666, b=233),这是因为11没有指定给哪个参数,如果不放到前面会导致解释器不知道这个值是给哪个参数的从而引发错误。
以上就是所有解释,与dict无关,但是与调用的语法有关。 |
|