关于一个问题

关于一个问题

http://img1.sycdn.imooc.com//climg/5defa58d09ea8a5e06480061.jpg

s = [1,-10,3,-1,5,6,7]
print(sorted(s , key = lambda x : x > 0 , reverse=False))

老师,您好,我想问一下,在这里,为什么打印输出的时候,s 只能是写在前面啊,如果s 写在后面,为什么会

报错???print(sorted(key = lambda x : x > 0 , reverse=False , s)) ,就是这一句!

正在回答

登陆购买课程后可参与讨论,去登陆

2回答

同学你好:

http://img1.sycdn.imooc.com//climg/5df0573b09b050c808450362.jpg

声明函数时,参数中星号 * 可以单独出现,例如:

def f(a,b,*,c):
   return a+b+c

如果单独出现星号 * 后的参数必须用关键字传入。因此同学直接将s放到后面就会报错。

*前面的参数就必须直接传入即可,不能按照关键字的形式传参,这样的话,会将所有的关键字传参默认在*的后面,那么*前面的参数没有值,也会报错。

http://img1.sycdn.imooc.com//climg/5df056d609e86dcc07350303.jpg

所以同学的传入参数的格式必须按照(s,key=xx,reverse=xx)

如果我解决了同学的问题,请采纳!学习愉快^_^。


好帮手乔木 2019-12-11 18:28:15

同学你好:

查看该方法的详细信息可知。

http://img1.sycdn.imooc.com//climg/5df0c3aa092878dc06740293.jpg

这是pyhton的内置方法。其中有5个参数。iterable,/,*,key=None,reverse=False

iterable:是一个可迭代对象。可迭代对象包括列表、元组、字典、字符串。

key:定义排序的规则。

reverse: reverse=True时为降序排列,reverse=False为升序排列,默认reverse=False。

1 关于*,*不代表任何参数,*后面的必须按照关键字的方式传入参数。由于key=None,reverse=False。这两个参数都有默认值(这两个参数为非必选的参数)。

2 关于/, / 不代表任何参数,它指示前面的都是位置参数,没有关键词参数

因此这个方法的传入参数的顺序必须:sorted(s,key=xx,reverse=xx)

s是同学提问中的列表。

如果我解决了同学的问题,请采纳!学习愉快^_^。

  • 提问者 为学习而奋斗 #1
    那我大概了解了,也就是说sorted()里面的第一个迭代对象,是不需要关键字传参,而后面的两个参数是需要关键字传参对吧,老师?
    2019-12-11 18:36:26
  • 好帮手乔木 回复 提问者 为学习而奋斗 #2
    同学你好:同学的理解是正确的,学习愉快^_^。
    2019-12-11 18:37:53
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
1.Python零基础入门
  • 参与学习           人
  • 提交作业       2727    份
  • 解答问题       8160    个

想要进入Python Web、爬虫、人工智能等高薪领域,你需要掌握本阶段的Python基础知识,课程安排带你高效学习轻松入门,学完你也能听得懂Python工程师的行业梗。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师