zoukankan      html  css  js  c++  java
  • Python 函数

    函数

    1.什么是函数

    函数就是一整套的通用执行过程,可以得到预期的结果     例如:一个计算和运算的函数,只要你给定参数,执行函数书写的运算过程,得到的结果就是2个或多个数的和运算

    2.Python中函数的定义
    def  函数名称(需要传的参数):

      '''注释部分,用来解释说明此函数实现的功能是什么'''

      代码块(函数体)

      return 返回值

    例子:

    def add(a,b):
        if a >b :
            print('{}大于{}'.format(a,b))
            m=a-b
            return m
        else:
            print('{}小于{}'.format(a,b))
            n=a-b
            return n
    
    print(add(8,19))
    
    输出结果:
    8小于19
    -11

    总结:

    • 函数里面的return  表示的是函数的返回值    可以在函数调用之后通过变量进行接收
    • 函数体遇到return就会终止运行  (也就是return后面的语句是不会执行的),相当于for、while的break
    • 函数的输出结果是由return决定的

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

    def abc(A,B):
        if A>100:
            return A
        return B
    
    print(abc(10,20))
    
    输出结果:
    20

    函数调用以后,得到的数据是由return决定的

    函数没有return返回结果,得到的数据就是None

    def all(A,B):
        if A>10:
            A+B
    
    print(all(10,20))
    
    输出结果:
    None

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

    函数没有return返回值的情况下
    def all(A,B):
        if A>10:
            n=A+B
            print (n)
    
    m=all(20,20)
    print(m)
    print(m+3)
    
    输出结果:
    None
    TypeError: unsupported operand type(s) for +: 'NoneType' and 'int'
    
    函数有return返回值的情况下
    def all(A,B):
        if A>10:
            n=A+B
            return n
    
    m=all(20,20)
    print(m)
    print(m+3)
    
    输出结果:
    40
    43

    print和return的区别:

    • print  是在运行栏中打印输出实际需要打印的返回结果
    • return  是函数运算的结果,获取结果以后不一定打印显示出来(定义一个函数,返回的结果可以方便后续的调用)

    函数的参数

    1.形参和实参

    形参:函数在定义的时候写的参数名,也就是变量名

    实参:函数在调用的时候传入的参数

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

    eg:

    def abc(A,B):
        if A>100:
            return A
        return B
    
    print(abc(10,20))
    
    以上,函数名称为:abc      
    形参是:A,B 因为它只是一个形式,表示占据一个参数位置
    实参:调用函数的时候传入的10和20,就是形参,因为它是具体的参数值

    2.位置参数  (表示的是形式参数和实际参数之间的关系)

    位置参数就是,函数定义的形参,定义函数有几个位置参数,调用过程中,要按照位置参数的顺序一一对应的进行传参(不能多也不能少)

    形参(也就是位置参数)和实参要一一对应,也就是形参和实参的个数和顺序都要一一对应上

    多了少了都不行,位置顺序不一样也不行,可能会报错(因为不同的形参,在函数运算的过程中有着不同的作用)

    形参和实参不是一一对应:
    def all(A,B):
        if A>10:
            n=A+B
            return n
    
    m=all(20,30,90)
    print(m)
    
    运行结果:
    m=all(20,30,90)
    TypeError: all() takes 2 positional arguments but 3 were given

    3.函数文档(.__doc__)

    给函数书写解释说明的文档,是为了让其他人能更好的理解你的函数,所以这是一个良好的习惯

    2 通过定义一个计算器函数,调用函数传递两个参数,
    然后提示选择【1】加 【2】减【3】乘 【4】除 操作,选择之后返回对应操作的值。
    
    '''
    def element(element1,element2):
        '''element1:传递的第一个参数
           element2:传递的第二个参数
           此函数是根据不同的计算需求
           计算传递的两个数的对应值'''
        INPUT = float(input('请选择以下操作
    【1】加 【2】减【3】乘 【4】除 :'))
        if INPUT == 1:
            sum = element1 + element2
        elif INPUT == 2:
            sum = element1 - element2
        elif INPUT == 3:
            sum = element1 * element2
        elif INPUT == 4:
            sum = element1 / element2
        else:
            print('请继续进行计算')
        return sum

    如果你运行时,在函数开头写的函数文档,在运行完成后,是不会被打印出来的,但是它会作为函数的一部分存储起来。这个称为函数文档字符串,它的功能跟注释一样

    与注释不同的是,函数文档字符串可以通过特殊属性(.__doc__)或者是使用help() 函数查看函数的文档

    函数文档如果是分开两部分来写,那么打印过程中只会打印第一个

    def all(A,B):
        '''这是一个函数'''
        '''这是另外一行备注'''
        if A>10:
            n=A+B
            return n
    
    m=all(20,30)
    print(m)
    
    print(all.__doc__)
    
    输出结果:
    50
    这是一个函数

    4.默认参数---提高函数调用的便捷性、放在位置参数的后面

    默认参数就是在函数定义的时候,给形参赋予了默认值的参数,就是给函数一个缺省值

    def languge(name='小明',code='真帅气'):
        return (name + '-->'+ code)
    
    print(languge())   #如果不赋予实参,则使用默认参数
    print(languge('邓伦'))  #重新赋予实参,调用赋予的实参
    
    输出结果:
    小明-->真帅气
    邓伦-->真帅气

    总结:

    • 如果有默认值,在函数调用的时候,如果位置参数是一一对应的,传入了实参,就会按照实际的传参去运行
    • 如果没有传入实参,那就使用默认参数

    默认函数的作用:

    • 简化函数调用过程,只需要传入少量的位置参数,就可以实现函数的调用
    • 默认参数必须放到位置参数的后面(位置参数不管与什么参数一起使用,位置参数必须是在首位)

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

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

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

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

    关键字是使用方法:在函数调用的时候使用

    def languge(name,code):
        return (name + '-->'+ code)
    
    print(languge(code='很伟大',name='中国'))
    print(languge('西安',code='大唐不夜城很壮观'))
    print(languge(code='大唐不夜城很壮观','西安'))
    
    
    输出结果:
    结果一:中国-->很伟大
    位置参数是运用在调用函数的过程中,可以不参照位置参数实际的顺序来,只需要改对应的形参传入对应的实参,就可以正常运行
    
    结果二:西安-->大唐不夜城很壮观
    
    结果三:SyntaxError: positional argument follows keyword argument
    第二个的输出结果会报错,因为位置参数无论何时都是排在第一位

    5.可变长参数(2种)

    • 位置可变长参数     *args    函数里面得到的是(元组类型)
    • 关键字可变长参数   **args  函数里面得到的是(字典类型)

    位置可变长参数:在函数内部的表现形式,是一个元组

    位置可变长参数,是用来接收函数调用时,多余的位置参数

    def lang(frist,*names):
        print(frist)
        print(names)
        return frist,names
    
    print(lang('你好','漂亮的','小姐姐'))
    
    输出结果:
    你好
    ('漂亮的', '小姐姐')  #位置可变长参数输出结果为元组   *names代表位置可变长参数,调用时,可以接收多个位置参数
    ('你好', ('漂亮的', '小姐姐'))

    注意:

      可变长位置参数,必须放在其他位置参数的后面,否则会报错

      一般可变长位置参数书写方法为 *args,起到一个占坑的作用。可变长位置参数的命名可以随意取,只要是有意义就ok

      函数调用时,除了已经写明的位置参数,其他的位置参数都被 *args可变长位置参数接收

    **kwargs   关键字可变长参数

    1.调用函数时,**kwargs 参数,返回的是一个字典类型

    def lang(frist,**names):
        print(frist)
        print(names)
        return frist,names
    
    
    print(lang('你好',names1='漂亮的',names2='小姐姐'))
    
    输出结果:
    你好
    {'names1': '漂亮的', 'names2': '小姐姐'}  #关键字位置参数,返回的结果为字典类型
    ('你好', {'names1': '漂亮的', 'names2': '小姐姐'})

    注意:

      位置可变长参数 *args  要放在关键字可变长参数 **kwargs 的前面

  • 相关阅读:
    LIGHTSWITCH 的树控件设计!
    企业即时通信平台与在线办公!
    特殊符号网 http://www.teshufuhao.net/
    国内主要工作流厂商分析 (转)
    衣联网 http://www.eelly.com/ 中国最大的专业服装批发市场(广州)
    NET FrameWork & CLR & C# 运行基本原理
    通过负载均衡器+域名实现容灾切换(2)DNS解析过程理解
    SPAN和RSPAN概念
    【转】一张图看懂开源许可协议,开源许可证GPL、BSD、MIT、Mozilla、Apache和LGPL的区别
    SIP Recording(录制)相关协议
  • 原文地址:https://www.cnblogs.com/lucky1212/p/13865579.html
Copyright © 2011-2022 走看看