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 dfelse: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
有高手会改写得优雅一点吗? 好像有个装饰器的东西但是不太会用~
问题解答
回答1:xm的值应该在循环中判断,并且xm为所有时并不是特殊到值得单独处理。
for i in df.index: if xm == ’所有’ or xm == i:#do something
相关文章:
1. java - mybatis怎么实现在数据库中有就修改,没有就添加2. MYSQL新建用户设置可以远程访问的问题3. $fields = $values = [];这条代码一直定义不了,一直报错,老师的源码也是被报错的,执行不了,请问该怎么解决这个问题4. python - 求一个在def中可以实现调用本def满足特定条件continue效果的方法(标题说不太清楚,请见题内描述)5. angular.js - angularjs的自定义过滤器如何给文字加颜色?6. javascript - 用表单提交两个时间段请求后台返回对应数据时出现的一些问题!7. node.js - nodejs和前端JavaScript 字符串处理结果不一样是什么原因?8. mysql - 我的myeclipse一直连显示数据库连接失败,不知道为什么9. mysql - SQL操作时间的函数?10. mysql 为何insert的时候会有lock wait timeout 异常
![$fields = $values = [];这条代码一直定义不了,一直报错,老师的源码也是被报错的,执行不了,请问该怎么解决这个问题](http://www.haobala.com/attached/image/news/202205/093622cb60.png)