老师,def __sort_seed(self, anchor)里anchor为什么可以用任意变量名被传进来?

来源:13-10 sorted 排序

慕勒1019045

2018-12-07

这个anchor是从哪里传递过来的?
为什么可以用任意变量名把anchors里的[‘name’]传递进来?

如果用anchors的话能理解…

写回答

3回答

7七月

2018-12-08

anchor是形式参数啊,这个叫什么都是可以的。建议再看看这个课程函数的部分。

0
1
慕勒1019045
非常感谢!
2018-12-13
共1条回复

kryo

2019-02-28

这个函数需要和sorted函数联系起来看: 

def __sort(self, anchors):
        anchors = sorted(anchors, key=self.__sort_seed, reverse=True)
def __sort_seed(self, anchor):
        r = re.findall('[\d\.]+', anchor['number'])
        number = float(r[0])
        if '万' in anchor['number']:
            number = number * 10000
        return number

 1.  sorted函数中的anchors是一个iterable(可以循环的元素,可能是列表,也可能是字典),是可以被用 for 来循环的。

 2. sorted 是 python 的一个内置函数,其功能是按照某种规则对 anchors 的内容进行排序,而这个规则是由 key 的值 self.__sort_seed(__sort_seed函数运算之后的返回值number) 来决定的。

 3. self.__sort_seed 和 self.__sort_seed() 的区别,有了括号表示这个函数立即就要被执行;没有括号(在函数sorted中)表示的是,遍历anchors的值,(每次)将anchors的(一个)元素作为函数__sort_seed的参数传入函数__sort_seed中进行(一次)运算,并将函数__sort_seed运算后的返回值(这个例子是number)作为sorted函数的参数key进行比较(从而对anchors进行排序)。最终sorted函数将返回一个(按照升序或)降序排列的anchors的值的列表。

2
0

慕勒1019045

提问者

2018-12-10

谢谢老师回答,我还是不太明白

def __sort_seed(self, anchor) 这个方法是生成一个新的数字的数组吗?

是的话,这些数字是从哪里来的?

因为这个类里面其他的参数的源头都知道是怎么来的,比如下面

def __analysis(self, htmls):
def __refine(self, anchors):
def __sort(self, anchors):


但是,def __sort_seed(self, anchor)里的anchor哪里来的,还是新生成的?


0
2
kryo
这个函数需要和sorted函数联系起来看,这个anchor其实是sorted函数的第一个参数anchors的遍历,类似于for anchor in anchors。
2019-02-28
共2条回复

Python3.8系统入门+进阶 (程序员必备第二语言)

语法精讲/配套练习+思考题/原生爬虫实战

14447 学习 · 4438 问题

查看课程