zoukankan      html  css  js  c++  java
  • 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)
  • 相关阅读:
    layout_weight使用
    Android sdk manager 下载速度慢的问题
    详谈OC(object-c)深浅复制/拷贝-什么情况下用retain和copy
    object-c(oc)内存管理机制详解
    xmpp实现的即时通讯聊天(二)
    xmpp实现的即时通讯聊天(一)
    iOS开发消息推送原理
    指定的转换无效。
    Oracle11g +Win 64+PLSQL9.0
    数据库连接字符串
  • 原文地址:https://www.cnblogs.com/Alom/p/10887026.html
Copyright © 2011-2022 走看看