关于命名关键字参数和廖老师的说明有出入
Topic sourcedef person2(name, age, *args, city, job): print(name, age, args, city, job) person2('Jack', 24, 123, 123, 123, city='Beijing', job='Engineer')
Jack 24 (123, 123, 123) Beijing Engineer
def person(name, age, *, city, job): print(name, age, city, job) person('Jack', 24, city='Beijing', job='Engineer')
def person2(name, age, *args, city, job): print(name, age, args, city, job) person2('Jack', 24, city='Beijing', job='Engineer')
Jack 24 Beijing Engineer Jack 24 () Beijing Engineer
我知道啊,但廖老师运行的结果是被当成位置参数了啊,而我这边是直接当成可选参数传入,我又没说会传给关键字参数,,你不明白我说的重点啊,我想说是python版本不一样造成的问题还是其他什么原因,我们讨论的都不在一个点上
你理解有误,再仔细看一下,老师说的是“把这4个参数均视为位置参数,但person()函数仅接受2个位置参数”,解释了前面一段的“命名关键字参数必须传入参数名,这和位置参数不同。如果没有传入参数名,调用将报错:”,他并没有“结果是被当成位置参数”
楼上,是你没认真看吧,老师后面都有说了他的解释器运行报错的提示是“TypeError: person() takes 2 positional arguments but 4 were given”而且老师结论讲的是:“由于调用时缺少参数名city和job,Python解释器把这4个参数均视为位置参数,但person()函数仅接受2个位置参数。”,就是说明结果是解释器当成了四个位置参数
但我的解释器报错提示是:“TypeError: person() missing 2 required keyword-only arguments: 'city' and 'job'”结果是解释器当成两个位置参数和可选参数,两个提示不一样啊,如果这是python版本问题那逻辑就不一样了啊,所以我才想问这是什么原因啊,你再好好看看吧
- 1
- 2
槲寄君
关于这个
def person(name, age, *args, city, job): print(name, age, args, city, job) person('Jack', 24, 'Beijing', 'Engineer')
我的错误提示是:TypeError: person() missing 2 required keyword-only arguments: 'city' and 'job'而不是像廖老师说的被当做四个位置参数传入,希望廖老师能看一下