函数——基本语法,嵌套、匿名、高阶、递归函数

  • 定义

    • 函数是指将一组语句的集合通过一个名字(函数名)封装起来,要想执行这个函数,只需调用其函数名即可
  • 特性
    • 减小重复代码
    • 使程序变的可扩展
    • 易维护
  • 函数参数
    • 定义函数可以带参数,也可不带参数
    • 形参:只有在被调用时才分配内存单元,在调用结束时,即刻释放所分配的内存单元。因此,形参只在函数内部有效。函数调用结束返回主调用函数则不能再使用该形参变量
    • 实参:可以是常量、变量、表达式、函数等,无论实参是何种类型的量,在进行函数调用时,它们都必须有确定的值,以便把这些值传送给形参。因此应预先用赋值,输入等办法使参数获得确定值
  • 默认参数
  • 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))

时间: 2024-11-04 15:16:34

函数——基本语法,嵌套、匿名、高阶、递归函数的相关文章

把函数当作参数传给高阶函数

#高阶函数应用1:把函数当作参数传给高阶函数 import timedef foo(): print('form the foo')def tmmer(func): start_time=time.time() func() stop_time=time.time() print('函数%s 运行时间是%s' %(func,stop_time-start_time))tmmer(foo) #总结:我们确实为函数foo增加了foo运行时间的功能,但是foo原来的执行方式是foo(),现在我们需要调

函数(作用域,匿名函数,函数式编程,高阶函数)

一.函数作用域 1.函数名表示的是内存地址 1 def test1(): 2 print('in the test1') 3 def test(): 4 print('in the test') 5 return test1 6 7 print(test()) 打印:in the test<function test1 at 0x000001E90E452EA0> 2.函数的作用域只跟函数声明时定义的作用域有关,跟函数的调用位置无任何关系 1 name = 'xiaopang' 2 def f

python函数(全局变量,局部变量,作用域,递归函数,高阶函数,匿名函数)

1.1函数 1.1.1什么是函数 函数就是程序实现模块化的基本单元,一般实现某一功能的集合.函数名:就相当于是程序代码集合的名称参数:就是函数运算时需要参与运算的值被称作为参数函数体:程序的某个功能,进行一系列的逻辑运算return 返回值:函数的返回值能表示函数的运行结果或运行状态. 1.1.2函数的作用 函数是组织好的,可重复使用的,用来实现单一,或者相关功能的代码. 函数能够提高应用的模块性,和代码的重复利用率 我们已近知道python提供了许多内置函数,比如print(),我们自已创建的

5.初识python装饰器 高阶函数+闭包+函数嵌套=装饰器

一.什么是装饰器? 实际上装饰器就是个函数,这个函数可以为其他函数提供附加的功能. 装饰器在给其他函数添加功能时,不会修改原函数的源代码,不会修改原函数的调用方式. 高阶函数+函数嵌套+闭包 = 装饰器 1.1什么是高阶函数? 1.1.1函数接收的参数,包涵一个函数名. 1.1.2 函数的返回值是一个函数名. 其实这两个条件都很好满足,下面就是一个高阶函数的例子. def test1(): print "hamasaki ayumi" def test2(func): return t

python--函数式编程 (高阶函数(map , reduce ,filter,sorted),匿名函数(lambda))

1.1函数式编程 面向过程编程:我们通过把大段代码拆成函数,通过一层一层的函数,可以把复杂的任务分解成简单的任务,这种一步一步的分解可以称之为面向过程的程序设计.函数就是面向过程的程序设计的基本单元. 函数式编程:是使用一系列函数去解决问题,函数式编程就是根据编程的范式来的出想要的结果,只要是输入时确定的,输出就是确定的. 1.2高阶函数 能把函数作为参数传入,这样的函数就称为高阶函数. 1.2.1函数即变量 以python的内置函数print()为列,调用该函数一下代码 >>> pri

Python 学习笔记 -- 内嵌函数、闭包、匿名函数、高阶函数map、高阶函数filter、高阶函数reduce

1 #------------------------------内嵌函数------------------------------ 2 #内嵌函数就是在函数内部定义函数 3 #实例一 4 print("#------------------------------内嵌函数------------------------------") 5 def funOutOne(): 6 x = 5 7 def funIn(): 8 x = 3 9 print("My funOutO

第6节 Scala中的高阶函数:1、2、3、

Scala高级特性 1.    课程目标 1.1.   目标一:深入理解高阶函数 1.2.   目标二:深入理解隐式转换 2.    高阶函数 2.1.   概念 Scala混合了面向对象和函数式的特性,我们通常将可以作为参数传递到方法中的表达式叫做函数.在函数式编程语言中,函数是“头等公民”,高阶函数包含:作为值的函数.匿名函数.闭包.柯里化等等. 2.2.   作为值的函数 可以像任何其他数据类型一样被传递和操作的函数,每当你想要给算法传入具体动作时这个特性就会变得非常有用. 定义函数时格式

python学习笔记之函数总结--高阶函数以及装饰器

python学习笔记之函数总结--高阶函数以及装饰器 Python特点: 1.不是纯函数式编程(允许变量存在): 2.支持高阶函数(可以传入函数作为变量): 3.支持闭包(可以返回函数): 4.有限度的支持匿名函数: 高阶函数: 1.变量可以指向函数: 2.函数的参数可以接收变量: 3.一个函数可以接收另一个函数作为参数: 下面我将示例一些函数的写法以及使用,并说明python中函数的特性: 1.基本的高阶函数示例: #!/usr/bin/env python def func():      

函数式编程 &amp; Python中的高阶函数map reduce filter 和sorted

1. 函数式编程 1)概念 函数式编程是一种编程模型,他将计算机运算看做是数学中函数的计算,并且避免了状态以及变量的概念.wiki 我们知道,对象是面向对象的第一型,那么函数式编程也是一样,函数是函数式编程的第一型.在面向对象编程中,我们把对象传来传去,那在函数式编程中,我们要做的是把函数传来传去,而这个,说成术语,我们把他叫做高阶函数.飞林沙 2)特点 计算视为视为函数而非指令 纯函数式编程:不需变量,无副作用,测试简单(每次的执行结果是一样的) 支持高阶函数,代码简洁 2. python支持

js里常用函数之高阶函数

高阶函数:将函数作为参数或者返回值的函数.将函数作为参数的用法通常称作回调函数,函数参数通常会在主函数被执行之后被高阶函数调用. 高阶函数的使用实例.可以把有相似操作的函数用一个高阶函数来重构,精简代码 如有一个比较函数:compareNumbers 1 function compareNumbers(x, y){ 2 3 if(x > y){ 4 5 return -1; 6 7 }else{ 8 9 return 1; 10 11 } 12 13 return 0; 14 15 } 16 1