• Python函数基础与函数递归


    数学中函数的定义: 一般的 在一个变化过程中, 如果有两个变量 x 和 y 并且 对于 x的每一个确定的值,y都有唯一确定的值与 其对应, 那么我们就把 x 成为 自变量 把y成为 因变量 y是x的函数。自变量x的取值范围叫这个函数的定义域
    y = 2*x

    python 中函数 是一种逻辑结构化和过程化的一种变成方法
    python中函数定义的方法:

    1 def test(x):
    2     "the function deinitions"
    3     x += 1
    4     return x


    def 定义函数的关键字
    test: 函数名
    () 内可定义形参
    "" 注释 注释是函数不可缺少的一部分****
    x += 1 : 泛指代码块或程序处理逻辑
    return 定义返回值
    调试运行:可以带参数也可不带
    函数名()

    函数的优点:
      1.代码重用
      2. 保持一致性,易维护
      3. 可扩展性


    Python中函数与过程:
    过程的定义: 过程就是简单特殊 没有返回值
    也就是 没有返回值的函数

    函数返回值:
    返回值 =0 返回None
    返回值 =1 返回 object
    返回值 >= 1 返回 tuple

    函数参数
    1 形参 只有被调用时分配内存单元, 调用结束释放单元
    2 实参 在函数调用时 他们必须是确定的值,这些值传给形参 因此要 预先赋值

    1 def test(x,y,z):
    2     print(x,y,z)

    位置 参数 需要一一对应 缺一不行 多一也不行
    test(1,2,3)
    关键字参数 无需一一对应 缺一不行 多一也不行
    test(x=1,z=2,y=3)
    位置参数必须在关键字参数左边
    test(1,3,y=2) 报错
    test(1,3,z=2) True

    参数组 (**字典 *列表

    如果没有 加* 就代表把整个列表当作一个整体
    加*则 遍历后当作 多个参数传递


    test(1,y=2,z=3,z=3) 一个参数不能传两个值

    1 def test(*args, *kwargs):
    2     print(args)
    3     print(kwargs)


    全局变量 和 局部变量
    全局变量 一般在 文件最顶端定义 全局可用 全局变量字母全部大写
    局部变量 在子程序中定义 只在子程序内部使用 局部变量 变量名小写

    在子程序中定义的 全局变量的关键字 global
    如果 函数的内容 无 global关键字 优先读取 局部变量 只能读取全局变量 无法对全局变量重新赋值
    如果函数中有global 关键字 变量本质时 全局变量 函数内 可读取可赋值

    函数 == 变量????

    1 def foo():
    2     print('this is foo')
    3     bar()
    4 def bar():
    5     print('this is bar')
    6     
    7 foo()

    先加载完的函数 不会报错

    1 def foo():
    2     print('this is foo')
    3     bar()
    4 foo()
    5 def bar():
    6     print('this is bar')    


    但 函数执行时 bar函数 未被加载到 内存中 会报错 所以就 引申出了 函数==变量

    函数的递归:
    特性:
    1必须有一个明确的结束条件
    2每次进入更深一层递归时,问题规模相比上次递归都应有减少
    3递归效率不高,递归层数过多会导致 栈溢出(在计算机中,函数调用是通过栈(stack)这种数据结构 ,每进入一次 函数 调用,栈会加一层栈帧,每当函数返回时,栈较少一层栈帧。由于栈的大小不是无限的,所以,递归调用的次数越多,会导致栈溢出



    纵有疾风起,人生不言弃!
  • 相关阅读:
    hrbust 1558 小背包(简单01背包)水坑
    hrbust 1174泉水(DFS深度优先搜索)
    HDU 1115
    HDU 4273
    HDU 2912
    POJ 3528
    HDU 1912
    HDU 4741
    HDU 4617
    POJ 1755
  • 原文地址:https://www.cnblogs.com/poetl/p/8315336.html
Copyright © 2020-2023  润新知