zoukankan      html  css  js  c++  java
  • 5.函数

    函数介绍

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

    特性:减少重复代码、使程序变的可扩展、使程序变得易维护

    1.函数五要素:关键字,函数名,参数,函数体和返回值

    关键字:def
    函数名:在以def关键字命名的函数中必须有
    参数:可以写,可以不写
    函数体:需要执行的代码块
    return:作用:可以返回值,也可以结束函数。但return可以写也可以不写。有没有return函数都有返回值,只有一个return或者不写返回None,xiereturn返回一个值,直接返回该值,写return返回多个值,返回的是一个元组。
    View Code

    2.无参函数

    def jige():
          pass
    View Code

    3.函数参数的两种类型

        形参:在函数的定义阶段 括号内写的变量名 叫做该函数的形式参数 简称 形参
        实参:在函数的调用阶段 括号内实际传入的值 叫做实际参数 简称 实参
        
        形参与实参的关系
            形参就相当于变量名,而实参就相当于变量的值
            函数调用传参的过程 就是给形参变量名赋值的过程
        
        注意:形参和实参的绑定关系只在函数的调用阶段有效,函数运行结束关系自动解除
        只在函数内部有效 函数外部无任何影响
        

    4.普通参数

    def func(name):     #name是形式参数
        print(name)      #函数体
    
    func('derek')       #执行函数,'derek'是传入的实参

    5.默认参数

    定义了默认参数后,在函数调用时不需要再传入,默认参数放在最后面

    复制代码
    def info(name,age,country = 'CN'):   #country定义了一个默认参数
        print('姓名:',name)
        print('年龄:',age)
        print('国籍:',country)
    
    info('derek',22)     #调用时,没穿实参countrty,就用默认的参数
    复制代码

    6.关键参数

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

    复制代码
    def info(name,age,country = 'CN'):
        print('姓名:',name)
        print('年龄:',age)
        print('国籍:',country)
    
    info(age=22,name='derek')   #使用关键参数,可以不按顺序
    复制代码

    7.*args

    def info(name,age,*args):     #*args会把多传入的参数变成一个元祖形式
        print(name, age,args)
    
    info("derek","22","CN","Python")     #derek 22 ('CN', 'Python')

    8.**kwargs

    def info(name, *args, **kwargs):  # **kwargs 会把多传入的参数变成一个dict形式
        print(name, args)    #derek (22, 'CN', 'Python')
        print(kwargs)        #{'sex': 'Male', 'province': 'HeBei'}
    
    info("derek", 22, "CN", "Python", sex="Male", province="HeBei")

    9.局部变量

    作用域在函数内部,不影响外部

    复制代码
    name = 'derek1'
    
    def change_name(name):
        print('before change:',name)
        name = 'derek2'
        print('after change:',name)
    
    change_name(name)
    print('最后还是没改',name)
    
    
    结果:
    before change: derek1
    after change: derek2
    最后还是没改 derek1
    复制代码

    递归函数

    如果一个函数在内部调用自身,那么这个函数就叫做递归函数。

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

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

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

    复制代码
    #递归实现阶乘n! = (n-1)! × n
    def factorial(n):
        if n == 1:
            return 1
        else:
            return n * factorial(n-1)
    print(factorial(5))
    
    结果:120
    
    过程:
    factorial(5)                        # 第 1 次调用使用 5
    5 * factorial(4)                    # 第 2 次调用使用 4
    5 * (4 * factorial(3))              # 第 3 次调用使用 3
    5 * (4 * (3 * factorial(2)))        # 第 4 次调用使用 2
    5 * (4 * (3 * (2 * factorial(1))))  # 第 5 次调用使用 1 
    5 * (4 * (3 * (2 * 1)))             # 从第 5 次调用返回
    5 * (4 * (3 * 2))                   # 从第 4 次调用返回
    5 * (4 * 6)                         # 从第 3次调用返回
    5 * 24                              # 从第 2 次调用返回
    120                                 # 从第 1 次调用返回
    复制代码

    高阶函数

    满足下列条件之一就可称函数为高阶函数

    • 某一函数当做参数传入另一个函数中

    • 函数的返回值包含一个或多个函数

    复制代码
    #简单的高阶函数

    def
    func(): print('in the func') return foo() def foo(): print('in the foo()') return 666 res = func() print(res) 结果: in the func in the foo() 666
    复制代码

     map()函数

    map()是 Python 内置的高阶函数,它接收一个函数 f 和一个list,并通过把函数 f 依次作用在 list 的每个元素上,得到一个新的 list 并返回

    复制代码
    def func(x):
        return x * x
    a= map(func,range(1,10))
    print(list(a))
    
    结果:
    [1, 4, 9, 16, 25, 36, 49, 64, 81]
    复制代码

    reduce()函数

    reduce()函数也是Python内置的一个高阶函数。reduce()函数接收的参数和 map()类似,一个函数 f,一个list,但行为和 map()不同,reduce()传入的函数 f 必须接收两个参数,reduce()对list的每个元素反复调用函数f,并返回最终结果值

    复制代码
    from functools import reduce
    def f(x,y):
        return x + y
    a = reduce(f,[1,3,5,7,9,10])
    print(a)
    
    结果:
    35
    复制代码

    filter()函数

    filter()函数是 Python 内置的另一个有用的高阶函数,filter()函数接收一个函数 f 和一个list,这个函数 f 的作用是对每个元素进行判断,返回 True或 False,filter()根据判断结果自动过滤掉不符合条件的元素,返回由符合条件元素组成的新list

    复制代码
    def is_odd(x):
        return x % 2 == 1
    a = filter(is_odd,[1,2,3,4,5,6,7,8])
    print(list(a))
    
    结果:[1, 3, 5, 7]
    复制代码
  • 相关阅读:
    Linux文件属性
    [Oracle] Listener的动态注册
    jQuery easyUI Pagination控件自定义div分页(不用datagrid)
    桂林电子科技大学出校流量控制器Android版1.0.0
    php使用check box
    Python windows ping
    Python selenium chrome 环境配置
    Linux wget auto login and backup database
    PyQt4 ShowHMDB show sqlite3 with QTableWidget summary
    PyQt4 py2exe 打包 HardwareManager
  • 原文地址:https://www.cnblogs.com/cmd61/p/11094200.html
Copyright © 2011-2022 走看看