zoukankan      html  css  js  c++  java
  • 函数第一部分:经典的永远是简单的-Python基础前传(10)

    (一)前言

    对于零基础学习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('失败')
    
    >>> 失败
  • 相关阅读:
    WordPress主题开发实例:查询单篇文章
    WordPress基础:get_page_link获取页面地址
    WordPress主题开发:优化标题
    React中的的JSX
    WordPress主题开发:WP_Query常用参数
    WordPress基础:wp_list_pages显示页面信息列表
    WordPress基础:常用分类列表wp_list_categories
    SQL Server 2008 安装教程
    XCODE调试时不显示变量值/指针地址的解决方案
    android iOS 编码问题害死人!
  • 原文地址:https://www.cnblogs.com/shujufenxi/p/10128263.html
Copyright © 2011-2022 走看看