zoukankan      html  css  js  c++  java
  • 函数2

    传递列表、字典、集合产生的现象
    d = {"name":"Alex","age":26,"hobbie":"大保健"}
    l = ["Rebeeca","Katrina","Rachel"]
    def change_data(info,girls):
    info["hobbie"] = "学习"
    girls.append("XiaoYun")
    change_data(d,l)
    print(d,l)
    函数的嵌套&匿名&高阶函数
    嵌套函数:
    name = "小猿圈"
    def change():
    name = "小猿圈,自学编程"
    def change2():
    # global name 如果声明了这句,下面的name改的是最外层的全局变层
    name = "小猿圈,自学编程不要钱" #这句注释掉的话,下面name打印的是哪个值?
    print("第3层打印", name)
    change2() # 调用内层函数
    print("第2层打印", name)
    change()
    print("最外层打印", name)
    匿名函数:
    #这段代码
    def calc(x,y):
    return x**y
    print(calc(2,5))
    #换成匿名函数
    calc = lambda x,y:x**y
    print(calc(2,5))
    res = map(lambda x:x**2 if x > 10 else x**3,[1,5,7,4,8,12])
    for i in res:
    print(i)
    高阶函数:
    1.只需满足以下任意一个条件,即是高阶函数

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

    3.return 返回另外一个函数
    def get_abs(n):
    return int(str(n).strip('-'))
    def add(x,y,f):
    return f(x) + f(y)
    print(add(5,-10,get_abs))
    函数的递归:
    1.必须有一个明确的结束条件

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

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

    def calc(n):
    print(n)
    n = int(n/2)
    if n > 0:
    calc(n)
    print(n)
    calc(100)

  • 相关阅读:
    hdu 1164 Eddy's research I
    链式线性表的实现
    StreamReader和StreamWrite和FileStream区别和用法
    后台返回json数据,前台显示代码
    数字分页类
    在线编辑器总结
    C# Web开发打开下载对话框代码
    Jquery validate插件使用方法详解
    正则表达式
    漂亮的表格样式
  • 原文地址:https://www.cnblogs.com/wzq1997/p/13178547.html
Copyright © 2011-2022 走看看