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
"""
时间: 2024-10-12 17:09:36

python 函数变量查找顺序的相关文章

python函数 变量 递归 匿名函数 内置函数 文件操作

1 语法 #语法 def 函数名(参数1,参数2,参数3,...): '''注释''' 函数体 return 返回的值 #函数名要能反映其意义 返回值数=0:返回None放回值数=1:返回object放回值数>1:返回tuple 2.定义函数的三种形式 1.无参:应用场景仅仅只是执行一些操作,比如与用户交互,打印2.有参:需要根据外部传进来的参数,才能执行相应的逻辑,比如统计长度,求最大值最小值 3.空函数:设计代码结构 形参即变量名,实参即变量值,函数调用时,将值绑定到变量名上,函数调用结束,

第十讲 python函数实参赋值顺序

解决:函数调用赋值顺序的问题 01,一般情况下是一一对应赋值(有预定义值的可以不赋值)-------推荐****** 02,可以指定形参一一赋值 03,有预定义值的参数不能优先于无预定义值的参数被赋值 注:01的情况下在调用的时候,不用写形参名称. 02的情况下在调用的时候,需指定:形参名称=值(所有形参全部指出) eg1: def test_e(n1,n2,n3=15):    n=n1+n2+n3    return n 01 对应的调用方法:s=test_e(4,1)       n3=1

变量在原型链中的查找顺序

js原型链 下面是一道js题目: [javascript] view plain copy function C1(name){ if(name){ this.name = name; } } function C2(name){ this.name = name; } function C3(name){ this.name = name || "John"; } C1.prototype.name = "Tom"; C2.prototype.name = &qu

Python函数知识点总结

1.函数的定义2.如何定义一个函数以及函数语法3.函数的调用4.函数的参数(形参,实参)以及参数的传递5.函数的返回值6.变量的作用域7.匿名函数8.嵌套函数和闭包9.装饰器 1.函数的定义 函数是组织好的,可重复使用的,用来实现一定功能的代码段.函数能提高应用的模块性,和代码的重复利用率. 2.如何定义一个函数以及函数语法 函数代码块以def关键词开头,后接函数名称和圆括号()传入的任何参数和自变量放在圆括号()中间函数的内容以冒号起始,并且缩进函数的第一行语句可以选择性的使用文档字符串---

Python函数篇

1.函数名的命名规则: 函数名必须以下划线或字母开头,可以包含任意字母.数字或下划线的组合.不能使用任何的标点符号: 函数名是区分大小写的. 函数名不能是保留字. 2. 形参和实参 形参:形式参数,不是实际存在,是虚拟变量.在定义函数和函数体的时候使用形参,目的是在函数调用时接收实参(实参个数,类型应与实参一一对应) 实参:实际参数,调用函数时传给函数的参数,可以是常量,变量,表达式,函数,传给形参 区别:形参是虚拟的,不占用内存空间,.形参变量只有在被调用时才分配内存单元,实参是一个变量,占用

Python:函数变量的使用

1.上层函数不能直接使用其嵌套函数的变量: def func1(x, y): z = x + y def func2(): m = 3 z += m return z print(func1(1, 2)) # 报错:name 'm' is not defined 2.上层函数中的变量可以在其嵌套函数内直接使用: def func1(x, y): z = x + y def func2(): m = 3 + z return m return func2() print(func1(1, 2))

python函数参数类型及其顺序

根据inspect模块官文文档中关于函数参数类型的相关说明,python函数参数共有五种类型,按顺序分别为:POSITIONAL_ONLY.POSITIONAL_OR_KEYWORD.VAR_POSITIONAL.KEYWORD_ONLY.VAR_KEYWORD.如图: POSITIONAL_ONLY:参数值必须以位置参数的形式传递.python没有明确的语法来定义POSITIONAL_ONLY类型的参数,但很多内建或扩展模块的函数中常常会接收这种参数类型,实际使用中不多见,这里暂不考虑. PO

Python 函数对象 命名空间与作用域 闭包函数 装饰器 迭代器 内置函数

一.函数对象 函数(Function)作为程序语言中不可或缺的一部分,但函数作为第一类对象(First-Class Object)却是 Python 函数的一大特性. 那到底什么是第一类对象(First-Class Object)呢? 在 Python 中万物皆为对象,函数也不例外,函数作为对象可以赋值给一个变量.可以作为元素添加到集合对象中.可作为参数值传递给其它函数,还可以当做函数的返回值,这些特性就是第一类对象所特有的. 1.函数身为一个对象,拥有对象模型的三个通用属性:id.类型.和值.

Python 五、Python函数

一.函数概述 1.函数的基础概念 函数是python为了代码最大程度地重用和最小化代码冗余而提供的基础程序结构. 函数是一种设计工具,它能让程序员将复杂的系统分解为可管理的部件 函数用于将相关功能打包并参数化 在python中可以创建4种函数: 全局函数:定义在模块中 局部函数:嵌套于其它函数中 lambda(匿名)函数:仅是一个表达式 方法:与特定数据类型关联的函数,并且只能与数据类型关联一起使用 函数和过程的联系:每个Python函数都有一个返回值,默认为None,也可以使用"return