zoukankan      html  css  js  c++  java
  • 函数相关

    函数

    定义函数

    #定义一个函数
    def func():
       '''函数体'''
        return
    
    • 形参
    • 实参
    • 返回值
    • 函数体

    参数

    • 没有参数
    • 一个参数
    • 多个参数 -必须先位置参数,在动态参数,再关键字参数 def func(n, *args, i=1)
      • 位置传参 -必须按照位置数量传实参

          def func(a, b):
              return a+b
          #调用函数
          print(func(1, 2))   #意思就是a = 1, b = 2
          #结果
          3
        
      • 关键字传参

        • 默认参数可以不传实参

        • 可以不按照顺序进行传实际参数

            def func(a, b=2):
                return a+b
            #调用函数
            print(func(1))  #这里只传入一个参数,另外一个参数默认为2
            #结果
            3
          
      • 动态参数

        • 参数名之前用*

        • 传进去是一个元组

        • 接受除了关键字参数的所有的参数

           def func(*args) # *必须有,args是变量可以更换
               for i in args
                   j += i
               return j
               #调用函数
               print(func(1, 2, 3, 4))  #这里传入多个实际参数值
               #结果 1+2+3+4
               10
          
        • 传入多个关键字参数 **kwargs

          • 传入的值是字典

              def func(**kwargs):
                  for i in kwargs:
                      print(i.key(), i.value())
              #调用函数
              func(a=1, b=2, c=3)
              #结果
              a, b, c 1, 2, 3
            
        • 动态传参数技巧

          • 给实际参数加*

              li = [1, 2, 3, 4, 5]
              func(*li)   #将列表作为实际参数传入函数中
            

    函数的注释

        def func():
            '''
            这里写注释
            函数的功能
            参数1:
            参数2:
            return值的类型
            '''
    

    命名空间和作用域

    • 内置命名空间

      • python解释器自带的函数名,变量等
      • print, input, len, str, int, list, tuple
    • 全局命名空间

      • 程序自上而下执行加载至内存的变量
      • 放置我们自定义的变量名和函数名
    • 局部命名空间

      • 函数内部定义的变量名

      • 调用函数时才能产生这个内存空间,随着函数调用的结束,内存回收

              a = 1
              b = 2
              def test(a, b):
                  a = 3
                  b = 4
                  print(a, b)
              c = test(b, a)
              print(c)
              #结果
              3, 4
              None
              # 说明局部变量优先调用
        
    • globle关键字 全局变量

    • nonlocal关键字 引用小局部的变量,向上寻找第一个接受的局部变量

      • 嵌套的内函数不能直接修改上层变量

    嵌套和作用域链

            #套用示范一
            def max(a, b):
                return a if a>b else b
            
            def the_max(x, y, z):
                c = max(x, y)
                return max(c, z)
            #套用示范二
            def outer():
                def iner():
                    print('iner')
                iner()
    

    闭包

    • 一定是嵌套的函数

    • 内部函数一定要调用外部函数的变量

    • 闭包的调用上层变量会在程序终止之前存在内存里

            def func():
                a = 1
                def func2():
                    print(a)
                return func2    #闭包的通常调用方式
            #闭包的调用
            inn = func()
            inn()   
            
            #func2是闭包
            #闭包的查询和确认
            print(func2.__closure__)
            返回cell为闭包
      
    • 闭包的应用

      • 设计函数的模块
  • 相关阅读:
    SAP S/4HANA extensibility扩展原理介绍
    SAP CRM系统订单模型的设计与实现
    使用nodejs代码在SAP C4C里创建Individual customer
    SAP Cloud for Customer Account和individual customer的区别
    Let the Balloon Rise map一个数组
    How Many Tables 简单并查集
    Heap Operations 优先队列
    Arpa’s obvious problem and Mehrdad’s terrible solution 思维
    Passing the Message 单调栈两次
    The Suspects 并查集
  • 原文地址:https://www.cnblogs.com/liliudong/p/9572739.html
Copyright © 2011-2022 走看看