zoukankan      html  css  js  c++  java
  • Python Day3

    本节内容

    1. 函数基本语法及特性

    2. 参数与局部变量

    3. 返回值

    4.递归

    5.匿名函数

    6.函数式编程介绍

    7.高阶函数

    8.内置函数

    一、函数基本语法及特性

    定义: 函数是指将一组语句的集合通过一个名字(函数名)封装起来,要想执行这个函数,只需调用其函数名即可。学过Java的同学,可以把他看作是一个方法。

    特性:

    1. 减少重复代码
    2. 使程序变的可扩展
    3. 使程序变得易维护
    语法
    
     def  functionname():
    
           函数体
    
    
    
    
    函数的使用:
    
    functionname()
    #!/usr/bin/env python
    #-*- coding:utf-8 -*-
    # author:Dragon war
    # datetime:2018/8/28 16:14
    # software: PyCharm
    
    
    #函数 计算一个加法 返回一个值
    def add():
        return 10+20;
    
    #调用函数
    sum=add();
    
    print(sum)
    
    
    #带参数的函数
    
    def div(a,b):
    
        return  a/b;
    
    
    divs=div(10,2);
    
    print(divs)
    View Code

    二、参数以及局部变量

    形参变量只有在被调用时才分配内存单元,在调用结束时,即刻释放所分配的内存单元。因此,形参只在函数内部有效。函数调用结束返回主调用函数后则不能再使用该形参变量

    实参可以是常量、变量、表达式、函数等,无论实参是何种类型的量,在进行函数调用时,它们都必须有确定的值,以便把这些值传送给形参。因此应预先用赋值,输入等办法使参数获得确定值

    默认参数:在我们使用函数时,如果指定参数值,那么就是我们指定的参数值,如果不指定就是默认的参数值。

    正常情况下,给函数传参数要按顺序,不想按顺序就可以用关键参数,只需指定参数名即可,但记住一个要求就是,关键参数必须放在位置参数之后。

    非固定参数:参数的个数不固定时使用。*args

    #非固定参数
    def registers(id,name,*args):# *args 会把多传入的参数变成一个元组形式
    
        print(id,name,args)
    
        pass
    
    registers(10,'小王',20,'陕西');
    registers(10,'小王');# *args没有传参,就是个空元组
    View Code

    **kwargs

    #非固定参数
    def registers(id,name,*args,**kwargs):# *args 会把多传入的参数变成一个元组形式   **kwargs会把多传入的参数变成一个字典 dict
    
        print(id,name,args,kwargs)
    
        pass
    
    registers(10,'小王',20,'陕西');
    registers(10,'小王');# *args没有传参,就是个空元组 **kwargs没传参数就是个空字典
    registers(10,'小王',20,'陕西',sex='',score=90);
    #10 小王 (20, '陕西') {}
    #10 小王 () {}
    #10 小王 (20, '陕西') {'sex': '男', 'score': 90}
    View Code

    局部变量:

    #!/usr/bin/env python
    #-*- coding:utf-8 -*-
    # author:Dragon war
    # datetime:2018/8/28 16:51
    # software: PyCharm
    
    
    
    name="Drango War";
    
    def showName(name):
        print("update before:",name)
    
        name="悟空";
        print("update after:", name)
        pass
    
    
    showName(name);
    
    print("在函数外边name的值:",name)
    # 运行结果
    # update before: Drango War
    # update after: 悟空
    # 在函数外边name的值: Drango War
    View Code

    全局与局部变量

    在子程序中定义的变量称为局部变量,在程序的一开始定义的变量称为全局变量。
    全局变量作用域是整个程序,局部变量作用域是定义该变量的子程序。
    当全局变量与局部变量同名时:
    在定义局部变量的子程序内,局部变量起作用;在其它地方全局变量起作用。
     
    三、返回值

    要想获取函数的执行结果,就可以用return语句把结果返回

    注意:

    1. 函数在执行过程中只要遇到return语句,就会停止执行并返回结果, 也可以理解为 return 语句代表着函数的结束
    2. 如果未在函数中指定return,那这个函数的返回值为None 

    四、递归

    在函数内部,可以调用其他函数。如果一个函数在内部调用自身本身,这个函数就是递归函数。

    # 递归
    
    def sum(n):
    
        print(n)
        n=n+1;
        if(n==20):#递归的退出条件
            return n;
        return sum(n);#调用自身
    
    f=sum(10);
    print(f)
    View Code

    递归特性:

    1. 必须有一个明确的结束条件

    2. 每次进入更深一层递归时,问题规模相比上次递归都应有所减少

    3. 递归效率不高,递归层次过多会导致栈溢出(在计算机中,函数调用是通过栈(stack)这种数据结构实现的,每当进入一个函数调用,栈就会加一层栈帧,每当函数返回,栈就会减一层栈帧。由于栈的大小不是无限的,所以,递归调用的次数过多,会导致栈溢出)

    五、匿名函数

    匿名函数就是不需要显式的指定函数  :lambad

    # 使用函数
    def div(a):
        print(a/10);
    
        pass
    
    div(20)
    
    # 使用匿名函数
    
    c=lambda n:n/10;
    print(c(20))
    View Code

    六、函数式编程

    函数是Python内建支持的一种封装,我们通过把大段代码拆成函数,通过一层一层的函数调用,就可以把复杂任务分解成简单的任务,这种分解可以称之为面向过程的程序设计。函数就是面向过程的程序设计的基本单元。

    函数式编程中的函数这个术语不是指计算机中的函数(实际上是Subroutine),而是指数学中的函数,即自变量的映射。也就是说一个函数的值仅决定于函数参数的值,不依赖其他状态。比如sqrt(x)函数计算x的平方根,只要x不变,不论什么时候调用,调用几次,值都是不变的。

    Python对函数式编程提供部分支持。由于Python允许使用变量,因此,Python不是纯函数式编程语言。

    函数式编程:是一种编程范式。是如何编写程序的方法。

    核心:主要思想是把运算过程尽量写成一系列嵌套的函数调用。

    七、高阶函数

    变量可以指向函数,函数的参数能接收变量,那么一个函数就可以接收另一个函数作为参数,这种函数就称之为高阶函数。

    def add(x,y,f):
        return f(x) + f(y)
     
     
    res = add(3,-6,abs)
    print(res)

    八、内置函数:

    就是python内置了一系列的常用函数,以便于我们使用

    https://www.cnblogs.com/xiao1/p/5856890.html

      

  • 相关阅读:
    第四周学习报告
    第三周学习报告
    第二周学习报告
    第一周学习报告
    大创首月学习计划
    20183122 综合实验《Python程序设计》实验报告
    20183122 实验三《Python程序设计》实验报告
    20183122 实验二《Python程序设计》实验报告
    数据存储和JSON,CSV
    python模块那点事
  • 原文地址:https://www.cnblogs.com/wuzhilong/p/9549683.html
Copyright © 2011-2022 走看看