函数(命名空间和作用域)

命名空间:

内置命名空间:就是解释器一启动就可以使用的名字,存储在内置命名空间内,启动解释器时加载到内存;

全局命名空间:在程序从上到下被执行的工程中依次加载到内存,放置我们设置的所有变量名和函数名;

局部内存空间:就是函数内部定义的名字。当调用函数时会产生这个命名空间,随着函数执行结束,这个命名空间就消失了;

在局部:可以使用全局和内置命名空间的名字;多个函数拥有多个局部命名空间,互不共享。

在全局:可以使用内置空间的名字,但不能使用局部空间的名字。

在内置:不可以使用全局及局部空间的名字;

当全局与内置名字相同是,会使用全局的名字;

作用域:

全局作用域:方法globals(),显示所有全局作用域的名字。

局部作用域:方法locals(),显示局部作用域的名字。

对于全局不可变数据类型的变量,在局部可以查看,但不能直接修改;若修改,要在程序的开始添加global声明

函数的嵌套:

嵌套定义:内部函数可以使用外部函数的变量nonlocal关键字声明了一个上层局部变量,会影响当前函数最近一层局部变量

闭包:

嵌套函数,内部函数调用外部函数的变量;——closue——方法,查看是否是闭包,例如:

def outer()
    a=1
    def inner()
        print(a)
        return inner
inn=outer
inn()

  

原文地址:https://www.cnblogs.com/geng-xiaoqiaoliushui/p/10261466.html

时间: 2024-08-01 06:13:11

函数(命名空间和作用域)的相关文章

python之函数命名空间和作用域

命名空间一共分为三种: 全局命名空间 局部命名空间 内置命名空间 python代码运行的时候遇到函数是怎么做的 从python解释器开始执行之后,就在内存中开辟了一个空间,每当遇到一个变量的时候,就把变量名和值之间的对应关系记录下来.但是当遇到函数定义的时候解释器只是象征性的将函数名读入内存,表示知道这个函数的存在了,至于函数内部的变量和逻辑解释器根本不关心 ---------代码在运行伊始,创建的存储"变量名与值的关系"的空间叫做全局命名空间 等执行到函数调用的时候,python解释

PYTHON学习0031:函数---命名空间和作用域----2019-6-25

比如变量x=1,x和1分别存在不同的地方,x存放的地方就叫命名空间,且这个命名空间不止存放x这个字母,还会以字典形式存储x和1的内存地址.先有命名空间才有的作用域. 作用域的查找空间: 原文地址:https://blog.51cto.com/13543767/2413273

python开发函数进阶:命名空间,作用域,函数的本质,闭包,内置方法(globales)

一,命名空间 #局部命名空间#全局命名空间#内置命名空间 #三者的顺序#加载顺序 硬盘上--内存里#内置-->全局(从上到下顺序加载进来的)-->局部(调用的时候加载) 1 #!/usr/bin/env python 2 #_*_coding:utf-8_*_ 3 4 #全局命名空间 5 a = 5 6 b = 8 7 #局部命名空间(函数) 8 def my_max(): 9 c = a if a > b else b 10 return c 11 m = my_max() 12 pr

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

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

day12函数的命名空间,作用域,闭包等

一.三元表达式 if条件成功的值    if  条件   else else条件成功的值 #if条件成立的结果 if 条件 else else条件成立的结果 # a = 20 # b = 10 # c = 5 if a>b else 10 # print(c) 二.函数的命名空间 命名空间一共分为三种: 全局命名空间 局部命名空间 内置命名空间 *内置命名空间中存放了python解释器为我们提供的名字:input,print,str,list,tuple...它们都是我们熟悉的,拿过来就可以用的

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

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

函数_命名空间和作用域

#函数进阶----命名空间和作用域 # a = 1# def func():# print(a)# func() 调用是可以的 # def func():# a = 1## func()# print(a) 不可以的 #命名空间和作用域# print()# input()# list# tuple#命名空间有三种# 内置的命名空间--------->python解释器 #就是python解释器一启动就可以使用的名字存储在内置命名空间中 #内置的名字在启动解释器的时候被加载到内存里 # 全局命名空

python3命名空间与作用域,闭包函数,装饰器

一.命名空间与作用域 命名空间是名字和对象的映射,就像是字典,key是变量名,value是变量的值 1.命名空间 name='egon' #定义变量 def func(): #定义函数 pass class Foo: #定义类 pass 2.命名空间的分类 (1)内置名称空间: 随着python解释器的启动而产生,包括异常类型.内建函数和特殊方法,可以代码中任意地方调用 print(sum) print(max) print(min) print(max([1,2,3])) import bui

c++ 命名空间 以及 作用域 函数参数 面向对象实验报告

面向对象的分析与设计  实验报告一 一.变量的储存类别 auto static register extern auto变量   函数中的局部变量,如不专门声明为static存储类别,都是动态地分配存储空间的,数据存储在动态存储区中.函数中的形参和在函数中定义的变量(包括在复合语句中定义的变量),都属此类,在调用该函数时系统会给它们分配存储空间,在函数调用结束时就自动释放这些存储空间.这类局部变量称为自动变量.自动变量用关键字auto作存储类别的声明. int f(int a) /*定义f函数,

python命名空间与作用域

python命名空间与作用域 命名空间是名称与对象之间的关系,可以将命名空间看做是字典,其中的键是名称,值是对象. 命名空间不共享名称. 在命名空间中的名称能将任何python对象作为值,在不同的命名空间中相同的名称可以与不同的对象相关联.但是,如果存在名称解析协议,则多个命名空间可以一起工作来解析名称.也就是说,如果有多个命名空间(总是有的),那么可以定义搜索的顺序,依次在不同的命名空间里来查找某个名称(或确认其不存在于任何认可的命名空间).在python中,将这一过程定义为作用域. 作用域搜