(一)前言

对于零基础学习Python的朋友,或者转行做数据分析的朋友,跟jacky交流最多的问题就是Python网络爬虫学习问题,比如说要爬取美团,或者说爬取携程等等,在爬取的过程中,这些朋友总是会遇到这样,或者那样的问题,我也看到了很多这样或者那样的代码,其实很多也是模仿视频教学中的代码,遇到了问题,之后来跟jacky探讨;

对于零基础学习Python的朋友,jacky是反对在基础不牢的时候,学习爬虫的,因为我们往往是由于一些基础的错误导致爬取数据不能成功,比如说BeautifulSoup这个库的强大,导致了很多朋友连正则都不去学习了,或是有些朋友“流水账的代码”(面向过程编程),有些网络数据可以爬取,那稍微复杂一点的代码就爬取不了,这一切的原因都是基础不牢,强行联系爬虫,导致“走火入魔”。

做任何事,最重要的都是基础,学习Python,学习数据分析也一样,那在Python中函数、对象和模块作为Python学习中的重中之重,是一定要熟记并且熟练应用,本次分析,jacky将给大家分析函数的学习,力求用一个例子,清楚的跟大家把函数构成捋顺清楚;

(二)为什么Python中要有函数

2.1 函数存在的用意

  • 如果Python中不创造出这个函数,Python只能是面向过编程,代码中出现重复功能我们只能再次写一遍;

  • 如果有了函数,Python就可以面向函数编程,我们在函数里写相应的功能,在代码中有同样功能需求时,我们可以直接调用函数,免去了重复劳动;

2.2 函数存在的本质

  • 函数存在的本质就是实现相应功能的

2.3 面向过程、面向函数、面向对象的简单解释

  • 面向对象和面向过程的简单解释:

    • 面向过程:和你谈业务。把所有的事情都谈妥了,开始做项目。一整套项目做下来了,有需求要变。还得整个改变。
    • 面向函数:一整套项目,分成了不同独立的功能组,有需求要改变,只改变相应的功能组,不用改变整个业务。

    • 面向对象:边做业务,边谈需求,这样就能够避免上面的问题。

(三)创建和调用函数

3.1 创建函数(定义函数)

  • 函数创建的组成:

    • 关键字:def

    • 函数名

    • 括号

    • 返回值

#定义函数
def xx():
print('jacky') #执行函数
xx()

3.2 函数的返回值

比如我们要定义几个函数,这几个函数就是用来实现几个功能的,我们假定这个函数是发邮件的,那发完邮件我们要知道邮件发送的成功还是没成功,我们需要这样一个反馈,这是我们就需要函数的返回值

--没有返回值
def email():
print('我们要发邮件了')
#调用函数
email()
>>>我们要发邮件了 --设定返回值
#那问题来了,我们调用的时候,怎么知道邮件发送成功没成功?是不是得给我返回一个值,告诉我们一下,否则我怎么知道这个功能是不是实现了,这时就要用到关键字return def email():
print('我们要发邮件了')
return'我告诉你了,邮件发送了,给你反馈了'
ret = email()
#执行函数
#函数return后面是什么值,ret等于返回值
>>>我们要发邮件了
>>>我告诉你了,邮件发送了,给你反馈了

3.3 形式参数与实际参数

  • 形式参数和实际参数比较抽象,这里jacky举个栗子,来给大家说清楚这两个概念,假设让A同学帮我取快递,我们用代码和函数的形式来模拟这个过程,来帮助大家理解Python中参数这个概念:

    • 我们假设A的职业就是帮别人取快递的,那我们要委托A给我们取快递,我们就要给他一定凭证,是吧,有了这个凭证A才能取回我们的快递;

3.3.1 第一阶段的设计思路

def qukuaidi():
站起来
转身
走到快递的地点
  • 我们粗略的用站起来,转身,走到快递的地点来模拟取快递这一个过程

3.3.2 第二阶段的设计思路

  • 小A取快递,不光是给你一个人取,不能是给你取一个就写一个程序,给别人取,在重新再写一遍这个程序是,是吧,这样就太繁琐了,所以呢,在我们创建取快递这个函数的时候,我们要给函数括号里一个参数,比如说是anyone,这个anyone可以是取快递的凭证,比如说只有用你的手机号,或是你的身份证号才能取到你的快递,那我们模拟的代码就是:
def qukuaidi(anyone):
#站起来
#转身
#走到快递的地点
print(anyone) return True #返回True就是反馈给我们取成功了

3.3.3 第三阶段的设计思路

  • 下面就是A要给我特定这个人拿快递了,那上面那个参数,或者说是凭证anyone,就是特定的了,比如说是这个anyone,用我的名字jacky_zhuyuanlu作为拿快递的凭证,我们就可以调用上面我们设计的函数了
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
>>> 成功
  • 以上,anyone就叫形式参数,我们实际传的值也就参数,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('失败') >>> 失败

函数第一部分:经典的永远是简单的-Python基础前传(10)的更多相关文章

  1. 函数第二部分:为什么说动态参数是没有计划好的参数-Python基础前传(11)

    动态参数1-一个星号变元组 动态参数存在的意义? 函数的作者有时候也不知道这个函数到底需要多少个参数,这时候动态参数就有存在的意义了 动态参数创建-加* 底层原理是:把数值型或其他数据类型变成了元组类 ...

  2. 完成一段简单的Python程序,使用函数实现用来判断输入数是偶数还是奇数

    #!/bin/usr/env python#coding=utf-8'''完成一段简单的Python程序,使用函数实现用来判断偶数和奇数'''def number_deal(a): if a%2==0 ...

  3. lua学习之深入函数第一篇

    深入函数第一篇 函数是第一类值,具有特定的词法域 第一类值 第一类值的意思是函数与 lua 中的其他类型如数字,字符串具有相同的权力 函数可以存储到全局变量或局部变量变量,还可以存储到 table 中 ...

  4. 第一篇:python基础

    python基础   python基础 本节内容 python起源 python的发展史 为什么选择python3 第一个python程序 变量定义 表达式和运算符 用户输入 流程控制 判断 流程控制 ...

  5. Python高手之路【三】python基础之函数

    基本数据类型补充: set 是一个无序且不重复的元素集合 class set(object): """ set() -> new empty set object ...

  6. Python开发【第四篇】:Python基础之函数

    三元运算 三元运算(三目运算),是对简单的条件语句的缩写. ? 1 2 3 4 5 # 书写格式   result = 值1 if 条件 else 值2   # 如果条件成立,那么将 “值1” 赋值给 ...

  7. python基础(三元运算+深浅拷贝+函数参数)

    三元运算 三元运算,又称三目运算,主要作用是减少代码量,是对简单的条件语句的缩写. 书写格式: result = 值1 if 条件 else 值2 即如果条件成立,则将值1赋给result变量,如果不 ...

  8. Python基础之函数等等

    三元运算 三元运算(三目运算),是对简单的条件语句的缩写. 1 2 3 4 5 # 书写格式   result = 值1 if 条件 else 值2   # 如果条件成立,那么将 "值1&q ...

  9. Python基础----函数

    1.作用域: 对于变量的作用域,执行声明并在内存中存在,该变量就可以在下面的代码中使用. if 1==1: name = 'wupeiqi' print name 下面的结论对吗? 外层变量,可以被内 ...

随机推荐

  1. Dev GridControl 子集合标题

    显示效果: 设置: this.gridView3.OptionsView.ShowViewCaption = true; this.gridView3.ViewCaption = "资产明细 ...

  2. pinfinder

    pinfinder https://pinfinder.net https://github.com/gwatts/pinfinder 关于 Pinfinder是一个小型免费程序,可以使用iPhone ...

  3. 炫酷的可视化工具包——cufflinks

    前言 学过Python数据分析的朋友都知道,在可视化的工具中,有很多优秀的三方库,比如matplotlib,seaborn,plotly,Boken,pyecharts等等.这些可视化库都有自己的特点 ...

  4. CentOS8 NextCloud 私有云存储搭建

    本文首发:https://www.somata.work/2019/CentOS8NextCloudBuild.html 之前发现 Owncloud 越来越捞了,推出了企业版和社区版,近几日突然发现原 ...

  5. 利用shell命令分析服务器日志

      在没有专业日志分析系统的情况下,我们有时需要对日志进行简单的分析,下面列出一些常用的shell命令分析日志的方法,一定要收藏 1.查看有多少个ip访问 awk '{print $1}' log_f ...

  6. 算法102----360笔试(m进制不进位相加最大值)

    转自:https://blog.csdn.net/qq_18310041/article/details/99656445 import copy # m进制 m = 5 n = 5 line = [ ...

  7. RxJava 以及 Android 中的通用线程解决方案、并发与线程安全

    关于RxJava如今是熟到发紫了,所以对于它底层的动作机制的了解是迫在眉睫了,费话不多说,直接开始. 这里还是以之前获取个人github仓库列表为例,用retrofit+rxjava,也是实际项目中用 ...

  8. Bcompare 提示 “这个授权密钥已被吊销” 解决方法

    Bcompare 提示 “这个授权密钥已被吊销” 解决方法 打开文件夹 %appdata%\Scooter Software 找到相应的版本,例如 Beyond Compare 3 删除里面的 BCS ...

  9. P1282 多米诺骨牌[可行性01背包]

    题目来源:洛谷 题目描述 多米诺骨牌有上下2个方块组成,每个方块中有1~6个点.现有排成行的 上方块中点数之和记为S1,下方块中点数之和记为S2,它们的差为|S1-S2|.例如在图8-1中,S1=6+ ...

  10. Entity Framework 在MySQL中执行SQL语句,关于参数问题

    在Entity Framework中添加MySQL模型,在写代码的过程中需要直接执行SQL语句. 在SQL语句中用到了@curRank := 0 这样在SQL语句中定义参数,同时还会有传入参数:ai. ...