• 理解Python函数和方法


    什么是函数?

           函数是抽象出的一组执行特定功能的重复代码,通俗理解,就是对一些重复的工作进行封装和然后直接调用,避免重复造轮子。


    Python中的函数如何定义?

           使用def关键字,结构如下:

    def 函数名(参数列表):
        函数体
        return语句(可省略)

      其中return 语句表示函数的结束,在函数内部return语句后的语句不会执行,return关键字后面客户以跟变量,表达式等表示向函数调用方的返回值,也可以不加变量或者直接省略return语句,表示向函数调用方返回None对象。

    函数如何调用?

      调用方法:函数名加括号,括号里传入参数列表,如下所示:

    def fun(a):
        print(a)



    执行结果

    >>> fun(3)
    3


    函数的参数有几种类型?

      函数的参数按照传入的要求和数量、类型的不同,一般分为以下几种:

      1.位置参数(必选参数)

    def fun(arg1,arg2,arg3):
        pass

      位置参数是最常见的参数类型,如上图所示,arg1,arg2,arg3是三个位置参数,顾名思义,在调用时必须严格按照定义的位置顺序传入参数,否则会造成结果错误甚至报错。

      2.默认参数

      如果某个参数的值大部分情况下都为某一特定的值,为调用方便,可为其设默认值,在调用时如果该参数取默认值,可不用传入该参数,如下所示:

    def fun(name,college="NEU"):
        print(name,"graduated from",college)
    执行结果

    >>> fun("I")
    I graduated from NEU

        注意:

        函数定义时,默认参数必须在必须参数(没有默认值的)之后,

        默认参数必须指向不可变对象(即为其赋的值必须是不可变对象),才可保证每次执行时默认参数的值相同。

        默认参数可以简化函数的调用,也可提高函数更新(增加新参数)后的向下兼容性,即为新增加的参数设置默认值从而不用改写原来函数的调用方式。

        3.可变参数

      "可变”指的是传入的参数个数可变,可变参数在定义时使用"    *args     "(args可改为任意变量名),调用时可传入任意数量的参数,会自动组装成元组,由args变量名指向。如下所示:

    def fun(*args):
        print(agrs)
    
    执行结果
    >>> fun(1,2,3)
    (1, 2, 3) 

      4.关键字参数

      所谓关键字参数,即为在传入时必须指明参数名和参数值,即以“参数名=值 ”的形式传入参数

      和可变参数类似,关键字参数支持传入任意个数的参数,区别是传入的必须是关键字参数,在执行时于自动将传入的关键字参数组装成字典,关键字参数在定义时使用" **kwargs " 亦可换成其他变量名,指向组装好的字典),如下所示:

    def fun(**kwargs):
        print(kwargs)
    
    
    执行结果
    >>> fun(a=1,b=2)
    {'a': 1, 'b': 2}

      5.命名关键字参数

      关键字参数不会限制关键字参数的名字,不利于参数名的检查,命名关键字能指定传入的关键字参数的名称,如果传入得关键字参数名称不符,将会报错。和关键字参数**kw不同,命名关键字参数需要一个特殊分隔符**后面的参数被视为命名关键字参数。定义的格式为“*,参数名1,参数名2“。如下所示:

    def fun(*,a,b):
        print("success")
    
        
    >>> fun()
    Traceback (most recent call last):
      File "<pyshell#9>", line 1, in <module>
        fun()
    TypeError: fun() missing 2 required keyword-only arguments: 'a' and 'b'
    >>> fun(a=1)
    Traceback (most recent call last):
      File "<pyshell#10>", line 1, in <module>
        fun(a=1)
    TypeError: fun() missing 1 required keyword-only argument: 'b'
    >>> fun(a=1,b=2)
    success

        如果函数定义中已经有了一个可变参数,后面跟着的命名关键字参数就不再需要一个特殊分隔符*了(命名关键字在定义时亦可设默认值):

    def person(name, age, *args, city, job="SE"):
        print(name, age, args, city, job)

     以上几种参数在函数定义时,按何种顺序?

      参数定义的顺序必须是:必选参数、默认参数、可变参数、命名关键字参数和关键字参数。


     函数和方法的区别?

      函数和方法本质上没有不同,一般来说类中定义的函数叫方法,其他情况下都叫函数。

  • 相关阅读:
    FIDDLER的使用方法及技巧总结(连载一)FIDDLER快速入门及使用场景
    Swiper轮播插件的花式用法
    前端Js框架汇总
    前端开发06
    前端开发面试题05
    前端开发面试题04
    原生js和jquery实现图片轮播特效
    如何判断前端开发能力?
    前端面试题03
    团队冲刺09
  • 原文地址:https://www.cnblogs.com/burningcarbon/p/11624515.html
Copyright © 2020-2023  润新知