python基础-函数(一)--pyth

发布时间:2019-09-27 07:09:02编辑:auto阅读(2273)

    python基础---函数(一)

    目录 python基础---函数(一)1.函数的定义2.函数 的参数详解3.return4.lambda匿名函数

    1.函数的定义

    function  功能,函数
        函数就是对代码进行一个封装,把实现某一功能的相同代码,进行封装到一起。下次需要使用时,就不需要进行代码编写,直接调用即可。
    好处:
        增加代码的复用性,增加代码的可读性减少代码的编写量,降低维护成本。
        函数可以看成,解决某类问题的‘工具’
    定义方法:
    '''
    def function_name(params):
        block
        return expression(表达式)/value
    '''
    def 关键字表示定义一个函数
    function_name 函数名,和变量的命名规则相同,以字母和_开头,可以包含字母,数字和_
    params 表示参数,可以是零个,一个或者多个参数,函数参数不用指定参数类型
    
    #examples
        def dieDai(iter):
            for i in iter:
                print(i)
        >>> li=(1,2,3,4)
        >>> dieDai(li)
        1
        2
        3
        4

    2.函数 的参数详解

    1.必备参数:参数没有默认值
    2.默认参数:参数是有默认值,调用函数是可以传参也可以不传参,不传时,参数是默认值
    3.不定长参数:可在定义是定义,也可在传入时定义传入
        定义方法:def function_name(*args,**kwargs)
        *args 将传入参数包装成元祖
        **kwargs  将传入参数包装成字典
    • [ ] #1.不传参数
      def fun1():
      print('不能传参数')

      fun1('q')
      Traceback (most recent call last):
      File "<pyshell#7>", line 1, in <module>
      fun1('q')
      TypeError: fun1() takes 0 positional arguments but 1 was given
      fun1()
      不能传参数
      #2.必备参数
      def fun2(a):
      print('必须传参数:',a)
      fun2(2)
      必须传参数: 2
      #3.默认参数 参数可传也可不传
      def fun3(b=2):
      print('默认参数:',b)
      fun3()
      默认参数: 2
      fun3(4)
      默认参数: 4
      fun3(b=10)
      默认参数: 10
      ##4.可选参数 可传0-多个,包装成元祖
      def fun4(arg):
      print('可以穿0个到多个',arg)
      fun4() #返回一个空元祖
      可以穿0个到多个 ()
      fun4(1) #返回一个元祖
      可以穿0个到多个 (1,)
      fun4(2,3)
      可以穿0个到多个 (2, 3)
      fun4(4,5,6,7,8)
      可以穿0个到多个 (4, 5, 6, 7, 8)
      fun4([1,2])
      可以穿0个到多个 ([1, 2],)
      fun4('sdf')
      可以穿0个到多个 ('sdf',)
      fun4({'q':123})
      可以穿0个到多个 ({'q': 123},)
      fun4((1,2))
      可以穿0个到多个 ((1, 2),)
      #可选参数,传参时加
      号,就把里面的壳去掉(解包)
      fun4((1,2))
      可以穿0个到多个 (1, 2)
      fun4(
      {'q':123})
      可以穿0个到多个 ('q',)
      fun4([1,2])
      可以穿0个到多个 (1, 2)
      fun4(
      'sdf')
      可以穿0个到多个 ('s', 'd', 'f')
      ##5.关键字参数
      def fun5(a,b): #定义的时候跟必备参数一样
      print(a,b) #必须放到最后
      fun5(a=1,b=2)
      1 2

            def fun6(**kwarg):
            print('关键字参数:',kwarg)     #包装成字典(可传0-多个)
            >>> fun6()
            关键字参数: {}
            >>> fun6(a=1,b=2)     #遵循变量名规则
            关键字参数: {'a': 1, 'b': 2}
            >>> fun6(**{'a':123,'b':'wer'})
            关键字参数: {'a': 123, 'b': 'wer'}
            >>> fun6(**{1:123,2:'wer'})       #key必须是字符串
            Traceback (most recent call last):
              File "<pyshell#48>", line 1, in <module>
                fun6(**{1:123,2:'wer'})
            TypeError: fun6() keywords must be strings
        ##参数混合时 关键字参数必须在后面,根据定义的书序,确保必备参数能拿到值且只有一个
        #1.必备参数+默认参数:默认参数必须在必备参数的后面
            def fun7(b,a=1):
                print(a,b)
            >>> fun7(1,)
            1 1 
            >>> fun7('q',a='we')
            we q
            >>> fun7(a='we',b='ert')
            we ert
            >>> fun7('q','w')
            w q
      
        #2
            def fun8(b,m=1,*a):
                print(b)
                print(m)
                print(a)
             ==================
            >>> fun8(1,2,3,4,5,6,7,8)
            1
            2
            (3, 4, 5, 6, 7, 8)
            >>> 
        #3
            def fun9(*a,b,m): #b,m为关键自参数
                print(a,b,m)
                print(b)
                print(m)
            >>> fun9(1,2,3,4,5,b='q',m='w')
            (1, 2, 3, 4, 5) q w
            q
            w

    3.return

    return 有两个作用:
        1.用来返回函数的运行结果,或者调用另外一个函数。比如max()函数
        2.函数结束的标志。主要运行了return,就强制结束了函数。return后面的程序都不会执行
    如果函数中没有写return,其实函数运行结束时,默认执行了 return None
    return 语句的位置是可选的,不是固定出现再函数的最后,可以自定义在函数的任何地方。
    
    #返回函数的运行结果
        >>> def fun1(a,b):      #返回a=2
            if a>b:
                return a
        >>> fun1(2,1)
        2
        >>> a=fun1(2,1)
        >>> a
        2
        >>> def fun1(a,b):      #返回b=None
            if a>b:
                print(a)
        >>> fun1(2,1)
        2
        >>> b=fun1(2,1)
        2
        >>> b
    #函数结束的标志 可以放在任何地方
        >>> def fun10(a,b):
            if a>b:
                print(a)
        >>> fun10(2,1)
        2
        >>> def fun10(a,b):
            return('我不下去了') #函数结束标志
            if a>b:
                print(a)
        >>> fun10(2,1)
        '我不下去了'

    4.lambda匿名函数

    没有函数名的函数
    g = lamdba x:x+1
    lambda 简化了函数定义的书写形式。是代码更为简洁,但是使用函数的定义方式更为直观,易理解
    
    lambda的应用场景:
    1.有些函数如果只是临时一用,而且它的业务逻辑也很简单时,就没有必要用def来定义,这个时候就可以使用lambda。
    2.函数都支持函数作为参数。lambda函数就可以应用
    
    >>> fun10           #函数体
    <function fun10 at 0x0000000003429D08>
    >>> g=lambda x:x+1  #函数体
    >>> g
    <function <lambda> at 0x00000000034371E0>
    >>> g(1)
    2

关键字