zoukankan      html  css  js  c++  java
  • Python中def及lambda的功能介绍

                               函数def及lambda的功能介绍

    1. def函数的功能介绍

    1. 函数的参数

    1. 无参数函数

      格式:def func_name():
               '''__doc__'''#函数的说明文档(内容)
               expression
      例如:def name_d():
               '''This is a  name list!'''
               print(['zhang','wang','li'])
           name_d()#调用函数
       >>> ['zhang','wang','li']
           print(name_d.__doc__)#打印函数的说明文档
       >>> This is a  name list!
      #函数不调用是不会执行操作的,但是会检测语法是否正确。调用函数的方法就是函数名()。 
      

      注:强烈建议声明函数时书写函数的说明文档。

    2. 位置参数(形参)

      格式:def func_name(arg1,arg2,...):
               '''__doc__'''#函数的说明文档(内容)
               expression
      例如:def jiafa(a,b,c):
               '''This is jiafa!'''
               print(a+b+c)
           jiafa(1,2,3)
       >>> 6
      #函数的位置可以有一个,也可以有多个。声明函数时设置位置的个数必须与调用时输入的实参的个数一样,而且顺序要一致。        
      
    3. 关键字参数

      格式:同上
      例如:def jiafa(a,b,c):
               '''This is jiafa!'''
               print(a+b+c)
           jiafa(a=2,1,3)
       >>> 6
      #关键字参数与上述的位置参数类似,只是关键字参数主要是在输入实参时,指定参数来赋值,可以改变函数参数的顺序。
      

      注:关键字参数只能放在位置参数后面。

    4. 默认参数

      格式:def func_name(arg1,arg2,...arg_n=value):
               '''__doc__'''#函数的说明文档(内容)
               expression
      例如:def jiafa(a,b,c=3):
               '''This is jiafa!'''
               print(a+b+c)
           jiafa(2,1)
       >>> 6
      #默认参数需要在声明函数时直接设定好值,但必须要放在其他形参的后面,调用函数时,默认参数可以再次赋值,也可以不指定。
      

      注:默认参数一定要在位置参数后面。

    5. 可变参数(动态参数)

      1. 动态参数之元祖

        格式:def func_name(*args):
                 '''__doc__'''#函数的说明文档(内容)
                 expression
        例如:def jiafa(*args):
                 '''This is jiafa!'''
                 print(args)
             jiafa(2,1,3)
         >>> (2,1,3)
        #一个*表示传入的参数是一个元祖,调用函数时,将传入的实参都作为元祖的元素传入。如果调用时未传入参数,则会传入一个空元祖。
        
      2. 动态参数之字典

        格式:def func_name(**args):
                 '''__doc__'''#函数的说明文档(内容)
                 expression
        例如:def jiafa(**args):
                 '''This is jiafa!'''
                 print(args)
             jiafa(2='a',1='b',3='c')
         >>> {1:'b',2:'a',3:'c'}
        #两个**表示传入的参数是一个字典,调用函数时,需要使用关键字参数的形式。调用时未传入参数,则会传入一个空字典。
        

    注:函数所有参数的传入顺序为:

    1. 位置参数 
    2. 关键字参数
    3. 默认参数
    4. 动态参数(元祖)
    5. 动态参数(字典)
    

    2. 函数的返回值

    1. 返回值为None

      格式:def func_name():
               '''__doc__'''#函数的说明文档(内容)
               expression
      例如:def jiafa():
                   '''This is jiafa!'''
                   print('Hello')
           result = jiafa()#声明函数的返回值
           print(result)
       >>> 'Hello'
       >>> None
      #函数中没有指定返回值,因此该函数的返回值为None
      
    2. 指定返回值

      格式:def func_name():
               '''__doc__'''#函数的说明文档(内容)
               expression
               return value#声明函数的返回值
      例如:def jiafa():
                   '''This is jiafa!'''
                   print('Hello')
                   return 123
           result = jiafa()
           print(result)
       >>> 'Hello'
       >>> 123
      #由于函数中使用return声明了函数的返回值,因此该函数的返回值不为空。
      
    3. 多个返回值

      格式:同上
      例如:def fan():
               '''This is a twos'''
               print('Hello')
               return 123,'abc',[1,3,]
           result = fan()
           print(result)
       >>> 'Hello'
       >>> (123, 'abc', [1, 3])
       #当函数返回值为多个对象时,将所有对象以元组的形式返回。  
      

    3. 函数的变量

    1. 全局变量global

      全局变量是指在函数外面声明的变量,(在函数内部使用需要使用global才能调用全局变量)

      格式:variable = value
           def func_name():
               '''__doc__'''
               global variable
               expression  
      #全局变量一般不提倡在函数内部进行调用,因为在函数内部调用,函数外面的值也跟随着变化了。      
      
    2. 局部变量local

      局部变量是在函数内部声明的变量

    全局变量和局部变量的有效范围

    1. 全局变量在函数外部可以正常使用
    2. 全局变量在函数内部也可以使用(需要用global声明)
    3. 局部变量在函数内部可以正常使用
    4. 局部变量在函数外部不可以被访问    
    

    注:特殊情况:当全局变量并不是一个字符串时,在函数内部是可以对其进行修改的,例如:列表、字典、集合等。

    3.域外变量nonlocal

    把域外或者父级函数的变量传入到域内或者子级函数中进行使用。
    
        格式:def func_name1():
                 variable = value
                 def func_name2():
                     nonlocal variable
                     expression
                 return func_name2()
        #域外变量常用于闭包函数中,而且在子级函数中使用不影响父级函数中的使用。
    

    2. 简单函数lambda的功能介绍

    lambda表达式是简单函数def的优化,减少代码的行数。

    格式:lambda args:expression
    
    1. 使用def

      例如:def jia(n1):
               '''函数的每个参数加10'''
               n = n1+10
               print(n1)
           jia(3)
       >>> 13
      
    2. 使用lambda

      例如:n = lambda n1:n1+10
           print(n(3))
       >>> 13
      

    注:lamdba是一个表达式而非语句,也不是代码块。lambda也支持默认参数、关键字参数、动态参数等。

  • 相关阅读:
    (转)轻松应对IDC机房带宽突然暴涨问题
    (转)老男孩:Linux企业运维人员最常用150个命令汇总
    (转)cut命令详解
    (转)Awk使用案例总结(运维必会)
    (转)Nmap命令的29个实用范例
    BigPipe学习研究
    js正则大扫除
    ffff表单提交的那点事
    高并发订单操作处理方法
    订单号的处理
  • 原文地址:https://www.cnblogs.com/single-boy/p/7406644.html
Copyright © 2011-2022 走看看