• python_递归_作用域


    全局变量和局部变量:

    全局变量:如果直接创建变量,而不在子程序中创建,创建的为全局变量

    局部变量:在子程序中创建的变量为局部变量,局部变量只能应用在子程序中

    global 变量:在子程序中,可将变量应用至全局,必须提前 申明

    name='lhf'
    
    def change_name():
        print('我的名字',name)
    
    change_name()
    
    
    def change_name():
        name='帅了一笔'
        print('我的名字',name)
    
    change_name()
    print(name)
    
    
    
    def change_name():
        global name
        name='帅了一笔'
        print('我的名字',name)
    
    change_name()
    print(name)

    风湿理论:函数就是变量

    如果创建的函数中有函数没有被创建,但在没有调用这个函数之前创建了,则不会报错

    def mode():
        print("hello")
        bau()
    def bau():
        print("world")
    mode()

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

    递归的特性:

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

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

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

    #问路
    import time           #1
    person_list = ["alom","poat","jion","haux"]     
    def ask_way(person_list):                #定义函数将列表传入             
        print("-" *60)                                           
        if len(person_list) == 0:                          
            return '没人知道'
        person = person_list.pop(0)
        if person == 'jion':
            return '%s说:我知道,她在东边' %person
        print('hi[%s],问一下路在哪里'%person)
        print("%s回答,我不知道,但我可以帮你问问%s"%(person,person_list))
        time.sleep(3)
        res= ask_way(person_list)
        return res
    res = ask_way(person_list)                          
    print(res)
  • 相关阅读:
    正则表达式
    HDU 2066 多源最短路
    UVA 11039 模拟
    Concrete Mathematics Chapter 1 Warmups
    List differences between JAVA and C++
    uva 11107Life Forms
    poj 1509 Glass Beads
    poj 3581
    网络流建图
    图论算法----网络流
  • 原文地址:https://www.cnblogs.com/Alom/p/10887026.html
Copyright © 2020-2023  润新知