zoukankan      html  css  js  c++  java
  • Python基础语法 第6节课(函数的定义、函数的参数)

    函数

    1.什么是函数

    当我输入一定数据以后,能根据里面的执行步骤,算出另一些数据的值(return值)

    2,在python中函数怎么定义

    def  function(x,y,z):

      #----文档字符串------告诉别人这个函数时干什么用的,能够实现什么功能

      代码块(函数体)

      return 返回值

    def add(a,b):
        #两个数相加的和
        c = a + b
        return c
    print(add(1,2))  #3 函数打印
    #第二种方式:通过变量接收
    d = add(6,8)
    print(c)

    ❤return总结:

    ①函数里面return 表示函数的返回值,可以在函数调用之后通过变量进行接收

    ②函数体遇到return就终止运行(也就是return后面的语句是不会执行的),相当于for 、while 的break

    ③函数的输出结果是由return决定的!!!

    例:下面是return在if里面,不执行if语句,是不会执行return语句。(也就是前面虽然有return,但是条件是在else里面满足,返回的是最后的return)

    def add(a,b):
        if a > 100:
            return a + b
        elif a == 100:
            return a + 2*b
        else:
            return a + 3*b
    print(add(6,8))

    例.return 终止函数,就不会执行第二个return

    def add(a,b):
        if a > 100:
            return a + b#return终止函数,后面就不会执行,省去else,是一种编程思维
        return a + b*3
    print(add(111,2))

    例:函数调用以后得到的数据是由return决定的。

    函数没有return,得到的数据就是None

    def add(a,b):
        c = a + b
    print(add(1,2))#结果是none

    没有return值,调用函数操作会报错

    def add(a,b):
        c = a + b
        print(c)#这里只是打印
    print(add(1,2) +3) #TypeError: unsupported operand type(s) for +: 'NoneType' and 'int'
    #自己定义一个有返回值的append函数
    def append(origin_list,element):
        origin_list.append(element)
        return origin_list
    print(append(['python'],'popo')) 
    #结果['python', 'popo']

    append函数没有返回值即没有return,在调用,例如print(mylist.append('java'))时返回的是None

    my_list = ['hello','python']
    a = my_list.append('java')
    print(a)#None
    #自己定义一个有返回值的append函数
    def append(origin_list,element):
    """对列表进行数据添加""" origin_list.append(element)
    return origin_list print(append(['python'],'popo')) # 结果['python', 'popo']

    ❤print 和return 的区别

    print:显示,在屏幕上打印出来

    return :函数运算的结果,获取结果以后不一定会打印显示出来

    注:没有定义的函数,无法调用。

    3.函数的参数

    ①.形参和实参

    形参:函数在定义的时候写的参数。变量名

    实参:函数在调用的时候写的参数。他是个值

    函数从调用的角度来说,分为形式参数和实际 参数。形参是指函数创建和定义过程中小括号里的参数;而实参指得是函数在被调用过程中传递进来的参数。如下所示

    >>> def MyFirstFunction(name):
        '函数定义过程中的name是叫形参'
        #因为Ta只是一个形式,表示占据一个参数位置
        print('传递进来的' + name + '叫做实参,因为Ta是具体的参数值!')
    
    >>> MyFirstFunction('小')
    传递进来的小叫做实参,因为Ta是具体的参数值!

    ②位置参数 positional argument表示的是形式参数和实际参数之间的关系)------不能多不能少,位置要正好的,按顺序一一对应
    形式参数和实际参数(实参)要疑义按照顺序对应。!!!!!也就是形参、实参的个数、顺序都要一一对应上。

    多了少了都不行,位置顺序不一样,结果有可能也会发生错误。
    def append(origin_list,element):
        origin_list.append(element)
        return origin_list
    print(append('popo',['python']))
    #

    origin_list.append(element)
    AttributeError: 'str' object has no attribute 'append'

    位置参数,实参的位置不对,传入的字符串‘popo’是不可以进行append()的方法的。属性错误AttributeError


    ③.函数文档(.__doc__)
    给函数写文档是为了让别人可以更好的理解你的函数,所以这是一个好习惯。函数文档的作用是描述该函数的功能。

    >>> def MyFirstFunction(name):
    '函数定义过程中的name是叫形参'
    #因为Ta只是一个形式,表示占据一个参数位置
    print('传递进来的' + name + '叫做实参,因为Ta是具体的参数值!')


    >>> MyFirstFunction.__doc__  #MyFirstFunction没有()
    '函数定义过程中的name是叫形参'
    >>>

    我们发现,在函数开头写下的字符串是不会打印出来的,但它作为函数的一部分存储起来。这个称为函数文档字符串,它的功能跟注释一样。

    与注释不同的是,函数文档字符串可以通过特殊属性 ._ _doc_ _(注:._ _doc_ _两边分别是两条下划线):

    也可以使用help()函数查看函数的文档

    函数文档写在一个字符串里面,写2个,只会打印出第一个,第二个不会打印打出,例如:

    >>> def MyFirstFunction(name,age):
        '这是一个函数文档'
        '用来记录函数的使用记录'
        print('班长:'+ name +',年龄:' + age)
    
        
    >>> MyFirstFunction.__doc__
    '这是一个函数文档'
    >>> 
    ④.默认参数---提高函数调用的便捷性、放在位置参数的后面
    默认参数就是在函数定义的时候,给形参赋予了默认值的参数,就是给函数一个缺省值,
    >>> def saySome(name="python",words="让编程改变世界!"):
        print(name + '—>' +words)    
    >>> saySome()  #调用函数时没有参数,就会去找默认参数
    python—>让编程改变世界!
    >>> saySome("java","也可以改变世界") #重新赋予实参,会调用函数时会调用实参,不会调用默认的参数
    java—>也可以改变世界

     默认参数总结:

    如果有默认值,在函数调用的时候:

    ♥如果位置参数是一一对应的,传入了实际参数,默认参数不会生效。

    ♥如果没有传入实际参数,默认值生效。

    1)默认值生效的情况:

    #默认参数,但是没有传入实际参数,默认值生效
    def append(origin_list,element='cc'):
        origin_list.append(element)
        return origin_list
    print(append(['python'])) #结果:['python', 'cc']

    2)默认值不生效的情况

    def append(origin_list,element='cc'):
        origin_list.append(element)
        return origin_list
    print(append(['python'],'java')) #结果:['python', 'java']

     为什么用默认函数?

    ♥默认参数的作用:

    简化函数调用的过程,只需要传入少量参数,就可以实现函数的调用。

    ♥默认参数必须放到位置参数的后面。也就是位置参数不管跟什么参数在一起,都必须是位置参数在前面。(容易出面试题)

    def get_name(first_name = '',last_name):#默认参数放在位置参数的前面,报错,语法错误
        '''获取名字'''
        return first_name + last_name
    print(get_name('wang','lili'))

    关键字参数------提高函数可读性、可以改变参数的顺序、放在位置参数的后面

    普通的参数叫做位置参数,使用位置参数可以解决程序员在调用一个函数时候,搞乱位置参数的顺序,以至于函数无法按照预期实现的潜在问题。

    关键字参数在什么时候用?函数调用的时候用,

    关键字参数的作用:可以提高函数调用时候的可读性,更加容易理解实际参数的意义。还是相对于位置参数来说,放在位置参数的后面。

    关键字怎么来?就是调用函数的时候,去形式参数里选,为形式参数赋值。

    关键字参数的位置是否可变?可以不按照顺序去调用

    #关键字参数的使用
    def
    get_name(first_name,middle_name,last_name): '''获取名字''' return first_name + middle_name + last_name print(get_name( middle_name = '66',first_name='wang',last_name='lili'))#关键字参数在调用的时候,可以不按照顺序
    #关键字参数放在位置参数的前面,报错,语法错误
    def get_name(first_name,middle_name,last_name):
        '''获取名字'''
        return first_name + middle_name + last_name
    print(get_name( middle_name = '66','wang',last_name='lili'))

    ⑥可变长参数

  • 相关阅读:
    Elasticsearch 检索
    Elasticsearch 基本操作
    Elasticsearch 集群
    Elasticsearch 插件head和kibana
    Elasticsearch 安装
    CentOS 安装JDK
    前端登录密码加密传输
    springboot2.0 快速集成kafka
    原来自定义模型绑定器还可以这么玩
    Value cannot be null or empty. 参数名: contentPath
  • 原文地址:https://www.cnblogs.com/ananmy/p/12776314.html
Copyright © 2011-2022 走看看