码迷,mamicode.com
首页 > 编程语言 > 详细

python 函数变量查找顺序

时间:2017-06-14 16:33:46      阅读:230      评论:0      收藏:0      [点我收藏+]

标签:env   orm   函数   bin   info   局部变量   error   定义   author   

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
"""

 

python 函数变量查找顺序

标签:env   orm   函数   bin   info   局部变量   error   定义   author   

原文地址:http://www.cnblogs.com/Andy963/p/7008731.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!