• 第三章 3.4 函数


     1 减少重复代码

    2 使程序变的可扩展

    3 使程序变得易维护

    def sayhi(): 函数名

        print('hello , i'm nobody!')

    sayhi() 调用函数

    def calc():

        res = x**y

        return res 返回函数执行结果

    c = cal(a,b)

    print(c)

    函数参数

    def calc(x,y): 形参

        res = x**Y

        return res

    c = calc(a,b) 实参

    print(c)

    默认参数

    def stu_register(name,age,course,country='CN'):
        print(----注册学生信息--)

        print('姓名’,name)

    ......

    关键参数

    给函数传参数要按照顺序,不想按照顺序就可以使用关键参数,只指定参数名即可,关键参数必须放在位置参数之后

    非固定参数

    若你的函数定义是不确定传入多少个参数,就使用非固定参数

    def register(name,age,*args,**kwargs):

        print(name,age,args,kwargs)

    register('alex',22)

    输出

    alex 22 () {} 没有传值为空

    register('jack',32,'CN','python',sex='male',country='shandong'):

    输出

    jack 22 ('CN','python'){'province':'shandong','sex':male}

    返回值

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

    def stu_register(name,age,course='py',country='cn'):

        print(--注册学生信息--)

       print('age',age)

        if age > 22:

            return False

        else:

            return True

    registrition_status=stu_register('王大锤‘,22,course='py,country='jp')

    if registrition_status:

        print('注册成功’)

    else:

        pring("too  old to be a student.')

    函数执行过程遇到return语句会停止并返回结果,如果未在函数中指定return ,那么函数的返回值为None

    全局与局部变量

    name = 'alex'

    change_name():

        global name

        name = 'alex  金角大王'

        print('name')

    嵌套函数

    name = 'alex'

    def change_name():

        name = 'alex2'

        def change_name2():

            name= 'alex3'

            print('第三层打印,name)

        change_name2() 调用内层函数

        print(第二层打印,name)

     change_name()

    print('最后一层打印',name)

    匿名函数

    res=map(lambda x:x**2,[1,5,7,4,8])

    for i in res:

        print(i)

    1

    25

    49

    16

    64

    高阶函数

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

    def add(x,y,f):

        return f(x) +f(y)

    res =add(3,-6,abs)

    print(res)

    只需满足下面一个条件,即是高阶函数:

    接受一个或者多个函数作为输入

    return 返回另一个函数

    递归

    一个函数在内部调用自身就是递归函数

    def calc(n):

        print(n)

        if int(n/2) == 0:

            return n

        return calc(int(n/2))

    calc(10)

    10

    5

    2

    1

    递归特性:

    1 必须有一个明确条件

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

    3 递归效率不高,递归层次过多会导致栈溢出

    递归的实际应用案例,二分法

     data=[1,3,6,7,9.12.14.16.17.18,20,21,22,23,30,32,33,35]

    def binary_search(dataset,find_num):

        print(dataset)

        if len(dataset) >1:

            mid = int(len(dataset)/2)

            if dataset[mid] == find_num:

                print('找到了,detaset[mid])

            elif dataset[mid] > find_num:

                print('找的数在mid[%s] 左边 %dataset[mid]) 

               return binary_search(dataset[0:mid],find_num)

            else:

                print(找的数在mid[%s] 右边 %dataset[mid])

                return binary_search(dataset[mid+1:],find_num)

        else:

            if dataset[0] == find_num:

                print('找到数字了',dataset[0])

            else:

                print(’要找的数字[%s] 不在列表里 ‘%find_num)

    binary_searc(data,66)

              

  • 相关阅读:
    Django之url路由
    Django之setting文件
    Diango之通过form表单向服务端发送数据
    Django之win7下安装与命令行工具
    Linux学习之查看系统资源命令总结(二十二)
    实现简单的web框架
    Linux下发送邮件
    Linux学习之日志管理(二十一)
    Shell学习之结合正则表达式与通配符的使用(五)
    Linux学习之后台任务与定时任务(二十)
  • 原文地址:https://www.cnblogs.com/mayicai/p/9152101.html
Copyright © 2020-2023  润新知