zoukankan      html  css  js  c++  java
  • python 函数变量查找顺序

    python 函数变量的查找顺序:优先级为: 局部---> 全局---> 如果仍没找到,将引发NameError错误。

    #!/usr/bin/env python
    #coding:utf-8
    #@Author:Andy
    # Date: 2017/6/14
    
    money = 1000
    def tell_info(name):
    	print("%s have %d " % (name, money))
    
    def fun():
    	money = 10
    	tell_info('egon')
    
    fun()
    # egon have 1000
    # tell_info 函数在fun函数内部执行,但是仍需要回到定义的地方去查找相关变量
    # 优先从局部找,局部没有找全局,因为函数字义时money=1000,而与执行位置的money=10,无关.
    
    
    money = 1000
    def f1():
    	money = 10
    	def tell_inform(name):
    		print("%s have %d " % (name, money))
    	tell_inform('egon')
    
    f1()
    # egon have 10
    # tell_inform函数在f1内部定义,且有局部变量的定义,所以在查找变量值是找到局部即停止
    # 不会再往全局找,所以此处money 最终结果为10
    
    
    """
    函数作用域与该函数在哪执行无关,只与定义函数有关。不管在哪调用都会回到定义阶段去
    找对应的作用域关系。查找顺序为: 局部---> 全局 --- > NameError
    """
    
  • 相关阅读:
    开始之旅9.18
    驱动学习
    Extjs TextField扩展
    数据结构经典算法java
    JAVA BeanUtil应用 一个类向另一个类转换
    Extjs timefield
    图片压缩成指定大小
    js正则表达式提取字符串中的数字
    STM32笔记记录2
    #ifdef,#else,#endif,#if用法详解
  • 原文地址:https://www.cnblogs.com/Andy963/p/7008731.html
Copyright © 2011-2022 走看看