zoukankan      html  css  js  c++  java
  • 函数——基本语法,嵌套、匿名、高阶、递归函数

    • 定义
      • 函数是指将一组语句的集合通过一个名字(函数名)封装起来,要想执行这个函数,只需调用其函数名即可
    • 特性
      • 减小重复代码
      • 使程序变的可扩展
      • 易维护
    • 函数参数
      • 定义函数可以带参数,也可不带参数
      • 形参:只有在被调用时才分配内存单元,在调用结束时,即刻释放所分配的内存单元。因此,形参只在函数内部有效。函数调用结束返回主调用函数则不能再使用该形参变量
      • 实参:可以是常量、变量、表达式、函数等,无论实参是何种类型的量,在进行函数调用时,它们都必须有确定的值,以便把这些值传送给形参。因此应预先用赋值,输入等办法使参数获得确定值
    • 默认参数
    • 1 def stu_register(name,age,course,country="CN"):
      #代码中country即为默认参数,当调用函数时,如果country不指定的话,则默认为“CN”,指定了的话,为指定的数
      #在定义函数时,默认参数要放在最后面
    • 关键参数
      • 正常情况下,给函数传参数要按顺序,不想按顺序就可以用关键参数,只要指定参数名即可(指定了参数名的参数就叫关键参数)
      • 关键参数必须放在位置参数(以位置顺序确定的高对应关系的参数)之后
      • 1 def stu_register(name, age, course='PY' ,country='CN'):
        2 
        3 #调用
        4 stu_register("王山炮",course='PY', age=22,country='JP' )
        5 
        6 #不可以用下面这两条
        7 stu_register("王山炮",course='PY',22,country='JP' )
        8 stu_register("王山炮",22,age=25,country='JP'
    • 非固定参数  
      • 在定义函数时不确定用户想传入多少个参数,就可以使用非固定参数
      • *args:def func(a,*args),传过来的所有参数打包成元组发送给args,通常放在最后,要不然会截胡
      • 1 #方式一:
        2 send_alert('报警','z','w','q','a')
        3 #方式二:必须要带*
        4 send_alert('报警',*('z','w','q','a'))
        5 send_alert('报警',*['z','w','q','a'])
      • **kargs:def func(a,**kargs),会把多传入的参数变成一个字典形式发送给kargs
    • return
      • 终止函数,即使return后面还有代码,也不执行
      • 若函数没有return的话,函数返回None
    • 全局变量  &  局部变量
      • 局部变量:在函数内部定义的变量为局部变量,作用域为定义该变量的函数
      • 全局变量:在函数外,定义在函数外部一级代码的变量,全局能用,作用域为整个程序
      • 全局变量不能调用局部变量
      • 函数内部调用全局变量:只要函数内部没有和全局变量同名的局部变量即可
      • 在函数内修改全局变量:在函数内定义:global name,实际项目中,不建议用global,一般情况下不用
      • 在函数内部修改列表,可通过切片方式修改列表,如果要整体修改的话,就要使用global了
    • 嵌套函数
      • 函数内部可以再次定义函数
      • 执行需要被调用
    • 匿名函数
      • 不需要显示指定函数名
      • 1 calc = lambda x,y:x**y
        2 print(calc(2,5))
    • 高阶函数
      • 接收一个或多个函数作为输入
      • return返回另外一个函数
    • 递归函数
      • 在函数内部,可以调用其他函数,如果一个函数在内部调用自身函数,这个函数就是递归函数
      • 两个基本要素,只有具备了这两个基本要素,才能在有限次计算后得出结果
        • 边界条件:确定递归到何时终止,也称为递归出口。
        • 递归模式:大问题是如何分解为小问题的,也称为递归体。 
        • 1 def func(n):
          2     if n == 1:
          3         return 1
          4     return n*func(n-1)
          5 print(func(4))
          View Code 
  • 相关阅读:
    企业级性能、安全可靠 阿里云发布企业级大数据平台开发者版
    阿里云的重大战略调整,“被集成”成核心,发布SaaS加速器助力企业成长
    阿里云MVP北京闭门会圆满落幕 多把“利剑”助力开发者破阵蜕变
    Lesson 1 Nehe
    字符串的基本操做
    字符串的基本操做
    字符串的基本操做
    glBlendFunc() opengl 混合
    glBlendFunc() opengl 混合
    glBlendFunc() opengl 混合
  • 原文地址:https://www.cnblogs.com/GraceZ/p/7955887.html
Copyright © 2011-2022 走看看