zoukankan      html  css  js  c++  java
  • 函数


    1、函数有3种形式
    1)语句形式: foo()
    def foo():
      pass
    2)表达式形式: 3*foo()
    def foo():
      return 1
    print(3*foo()) //3
    3)当做另一个参数的函数:foo(foo('hehe'))
    def foo(a):
      print(a)
    foo(foo('hehe'))// hehe hehe


    2、函数是第一类对象,即函数可以被当做数据传递
      1)可以被引用
      def bar():
        print('hehe')
      res=bar
      res()
      2)可以当做参数传递
      def bar(a):
        print(a)
      bar(bar(1))


      3)返回值可以是函数
      def foo():
        print('1')
      def bar():
        print(foo)
        return foo
      a=bar()
      a()


    4)可以当做容器类型的元素
    def foo():
      pass
    def bar():
      pass
    li=[bar,foo]
    li[0]()
    li[1]()

    3、函数的参数
    1)形参和实参定义
    2)形参为变量名,实参为变量值,函数调用就是把值绑定在名字上,函数调用完成,接触绑定
    3)参数的分类:
      位置参数:按照从左往右的顺序定义参数
      位置形参:必须要传入值
      位置实参:按照位置给参数传值
      关键字参数:按照key=value的形式定义实参不用按照位置给形参传值
    需注意:关键字实参必须在位置实参后边
    #正确
    def foo(a,b,c):
      pass
    foo(1,2,c=3)
    #错误
    def foo(a,b,c):
      pass
    foo(1,c=3,2)
    2、同一个形参不能重复传值
    #错误
    def foo(a,b,c):
      pass
    foo(1,2,3,b=4)
    默认参数:形参定义时赋好的值,实参可以不必给默认形参传值
    需注意:1、只在执行定义的时候赋一次值
    2、默认参数定义在位置参数右面
    #正确
    def foo(a,b,c=1):
      pass
    #错误
    def foo(a,c=1,b):
      pass
    3、默认参数通常定义成不可变类型(不定义成列表字典)
    可变长参数:1、针对实参在定义时长度不固定的情况,形参可接受任意长度实参:
          2、而实参有位置实参和关键字实参两种方式,形参也有对应的两种方式接受不固定实参,*args,**kwargs。
    实例分解:
    def foo(x,y,*args):
      pass
    foo(1,2,3,4,5)
    ==>
    def foo(x,y,*args)):
      pass
    foo(1,2,*(3,4,5))
    ==>
    def foo(1,2,*(3,4,5))):
      pass
    foo(1,2,*(3,4,5))
    #执行foo时会将3,4,5传递给 *,会将3,4,5 做成元组(3,4,5)赋值给args
    #**kwargs
    def foo(x,y,**kwargs)
      pass
    foo(1,y=2,a=1,b=2,c=3)
    ==>
    def foo(x,y,**kwargs)
      pass
    foo(1,y=2,**{'a':1,'b':2,'c':3})
    ==>
    def foo(1,2,**{'a':1,'b':2,'c':3})
      pass
    foo(1,y=2,**{'a':1,'b':2,'c':3})
    #调用foo时会将a=1,b=2,c=3 转化为**{'a':1,'b':2,'c':3},{'a':1,'b':2,'c':3}传入kwargs
    #命名关键字参数:*后定义的参数,必须被传值(有默认值除外)且必须按照关键字实参的形式传递可以保证,传入的参数中一定包含某些关键字
    def foo(x,y,*args,a=1,b,**kwargs):
      print(x,y)
      print(args)
      print(a)
      print(b)
      print(kwargs)
    foo(1,2,3,4,5,b=3,c=4,d=5)
    ==>
    1,2
    (3, 4, 5)
    1
    3
    {'c': 4, 'd': 5}


  • 相关阅读:
    标题:CSS-button添加display:block;属性后自动换行!
    JS-遍历对象
    JS-获取对象的长度大小
    HTML-span和div区别
    SQL-Foreach标签
    JS_Select_option切换自动触发事件
    JS_Select赋值的几种方式
    加密系统文件夹
    JS-返回上一页
    metronic 4.5.7开发环境下, 在Windows 10上安装了10.16.0版本的node js之后,导致node sass无法加载
  • 原文地址:https://www.cnblogs.com/kunixiwa/p/7194251.html
Copyright © 2011-2022 走看看