搜尋

首頁  >  問答  >  主體

python - 这段函数如何改写比较优雅?

如图:

其实就是多了一个判断而已 ( 但是我因此需要复制2段一样的代码 )

具体代码如下:

def get_all_ranks(df,xm):
    if xm == "所有":
        for i in df.index:
            #如果项目登录所有(就不做判断了,直接全部都查询!!!!)
            url = df["域名"][i]
            kw = df["关键词"][i]
            #查询一下收录
            df["收录"][i] = Baidu().baidu_sites(url)
            #如果没有收录
            if df['收录'][i] != 0:
                #就不查排名了
                df["排名"][i]=df["手机排名"][i] = -1
            #否则就更新一下排名
            else:
                df["排名"][i] = Baidu().rank(kw,url)[0]
                df["手机排名"][i]=Baidu().rank(kw,url,zd="m")[0]
            print ("%s,关键词:%s,pc排名:%s,手机排名%s" % (url,kw,df["排名"][i],df["手机排名"][i]))
        return df
    
    else:
        for i in df.index:
            if df["项目"][i] == xm:
                url = df["域名"][i]
                kw = df["关键词"][i]
                #查询一下收录
                df["收录"][i] = Baidu().baidu_sites(url)
                #如果没有收录
                if df['收录'][i] != 0:
                    #就不查排名了
                    df["排名"][i]=df["手机排名"][i] = -1
                #否则就更新一下排名
                else:
                    df["排名"][i] = Baidu().rank(kw,url)[0]
                    df["手机排名"][i]=Baidu().rank(kw,url,zd="m")[0]
                print ("%s,关键词:%s,pc排名:%s,手机排名%s" % (url,kw,df["排名"][i],df["手机排名"][i]))
        return df

有高手会改写得优雅一点吗? 好像有个装饰器的东西但是不太会用~

ringa_leeringa_lee2781 天前425

全部回覆(1)我來回復

  • 大家讲道理

    大家讲道理2017-04-18 10:26:07

    xm的值應該在循環中判斷,並且xm為所有時並不是特殊到值得單獨處理。

    for i in df.index:
        if  xm == '所有' or xm == i:
            #do something

    回覆
    0
  • 取消回覆