半路自学的编程小透明,刚刚接触python这门语言。现在有个疑问想请教大家。
我想问的是,大家是如何判断、以及用什么标准来决定什么时候使用函数?什么时候使用类?
函数还好说,一段代码需要重复使用的时候用函数会减少代码量。
但是我遇到了这样一个实例,由于目前思想上更习惯使用面向过程编程,所以在编写下面这个小小爬虫程序的时候就写成了这样的形式:
# 任务目标是爬取特定网页上图片列表页面的所有图片。
# 由于是列表页面所以有一个总页数,就使用了 for 循环遍历所有页面,然后下载个页面图片的思路。
# 大致如下
base_url = 'xxx/page=' # 网址忽略了
pages = 90 # 假设一共有 90 页
for page in range(1, pages + 1): # 首先使用 for 遍历列表的每一页,获取所有的 img 标签
url = base_url + str(page)
rq = requests.get(url)
soup = BeautifulSoup(rq.text)
all_tag_img = soup.find_all('img')
for tag in all_tag_img: # 然后在通过 for 遍历所有标签获取下载地址,下载后保存
img_url = tag.get('src')
img = requests.get(img_url)
# 下面就是获取图片的名称,然后保存什么的了
这样下来的话,流程上面感觉比较接近普通浏览的顺序,
但这是这里用不到函数,更用不到类,但是见到过很多爬虫教程,大家会把例如下载图片、获取名称、保存这些东西封装成函数。有些直接就是创建一个爬虫的类,然后增加各种功能。
所有,问题就是,这样一个任务,你们回去用函数或类么?为什么?
我觉得编程最难的是思想,所有我特别想知道你们是怎么考虑的
万分感谢
个人觉得,其实这个跟你需要完成的任务有关。打个比方,你只是自己想写一个程序,方便自己工作,那你就可以写函数为主,反正自己知道这些函数什么意思,有时候换地方使用直接copy一下,修修改改就好了。
而如果是完成某个大的项目,项目要分很多块,那么就必须写类了。有人说我写个函数,最终实现起来还不是一样?实现起来是一样,那么后期维护呢?你是更喜欢看一个模块,这个模块有几个类,还是说喜欢看几十个函数呢?显而易见,一般稍微有点样子的项目都是分成几个模块,每个模块会分出几个类来各自实现某个特定的任务。到代码层的时候,才会需要看函数的代码。
如果一个项目是由按照某些顺序,直接调用几十个函数完成的,相信后期维护的人会疯吧?好气啊,全是函数,虽然有说明,也很费事的吧?