(一)前言
对于零基础学习Python或者转行做数据分析的朋友,跟jacky交流最多的问题就是Python网络爬虫学习问题;比如说要爬取美团,或者说爬取携程等等。在爬取的过程中,这些朋友总是会遇到这样或者那样的问题,我也看到了很多规范和不规范的代码,很多朋友都是模仿视频教学中的代码遇到了问题,之后来跟jacky探讨得;
说说jacky的立场:对于零基础学习Python的朋友,jacky是反对在基础不牢的时候,学习爬虫的。
因为爬虫入门容易,但能做到应用还是比较复杂的,这需要我们综合能力是很高的,如果不是计算机专业的同学,我们还是要把基础打牢,再去学习爬虫;
jacky要用十分钟教你们一个爬虫的实操也很简单,但是作为学习的我们不能自欺欺人,有些网站可以爬取,并不是因为你会了爬虫,而是这个网页根本就没有爬取的意义;
我们往往是由于一些基础性的错误导致爬取数据不能成功,比如说虽然有BeautifulSoup这个强大的库,但正则我们还是要会用的,看到太多朋友“流水账的代码”(面向过程编程),朋友们总是有些网络数据可以爬取,那稍微复杂一点的代码就爬取不了,这一切的原因都是基础不牢,强行练习爬虫,导致“走火入魔”。
做任何事,最重要的都是基础,学习Python,学习数据分析也一样。在Python中,作为Python学习中的重中之重,函数、对象和模块是一定要熟记并且熟练应用的,本次分享,jacky将给大家Python函数的第一部分:经典的永远是简单的。
(二)为什么Python中要有函数
2.1 函数存在的用意
2.2 函数存在的本质
2.3 面向过程、面向函数、面向对象的简单解释
-
面向对象和面向过程的简单解释:
-
面向过程:和你谈业务。把所有的事情都谈妥了,开始做项目。一整套项目做下来了,有需求要变,还得整个改变。
-
面向函数:一整套项目,分成了不同独立的功能组,有需求要改变,只改变相应的功能组,不用改变整个业务。
-
面向对象:边做业务,边谈需求,这样就能够避免上面的问题。
(三)创建和调用函数
3.1 创建函数(定义函数)
#定义函数def xx():
print('jacky')#执行函数xx()
3.2 函数的返回值
比如我们要定义几个函数,这几个函数就是用来实现几个功能的,我们假定这个函数是发邮件的,那发完邮件我们要知道邮件发送的成功还是没成功,我们需要这样一个反馈,这是我们就需要函数的返回值
--没有返回值def email():
print('我们要发邮件了')#调用函数email()
>>>我们要发邮件了
--设定返回值#那问题来了,我们调用的时候,怎么知道邮件发送成功没成功?是不是得给我返回一个值,告诉我们一下,否则我怎么知道这个功能是不是实现了,这时就要用到关键字returndef email():
print('我们要发邮件了')
return'我告诉你了,邮件发送了,给你反馈了'
ret = email()#执行函数#函数return后面是什么值,ret等于返回值
>>>我们要发邮件了
>>>我告诉你了,邮件发送了,给你反馈了
3.3 形式参数与实际参数
3.3.1 第一阶段的设计思路
def qukuaidi():
站起来
转身
走到快递的地点
3.3.2 第二阶段的设计思路
def qukuaidi(anyone):
#站起来
#转身
#走到快递的地点
print(anyone)
return True #返回True就是反馈给我们取成功了
3.3.3 第三阶段的设计思路
def qukuaidi(anyone):
#站起来
#转身
#走到快递的地点
print(anyone)
return True
qukuaidi('jacky_zhuyuanlu')
>>> jacky_zhuyuanlu
def qukuaidi(anyone):
#站起来
#转身
#走到快递的地点
print(anyone)
return True
ret= qukuaidi('jacky_zhuyuanlu')
if ret:
print('成功')
>>> jacky_zhuyuanlu
>>> 成功
我们把上面的过程在引申一下:我们要设计这样一个程序,就是A取快递,只给jacky取,不给别人取,那我们的代码就要这样实现:
def qukuaidi(anyone):
#站起来
#转身
#走到快递的地点
#print(anyone)
if p == 'jacky_zhuyuanlu':
return True
else:
return False
ret2 = qukuaidi('andy')
if ret2:
print('成功')
else:
print('失败')
>>> 失败