局部变量

名称空间和作用域

笑着哭i 提交于 2019-11-26 17:41:27
名称空间 定义:内存有一块内存存储变量名与变量间的绑定关系的空间,存放名字(变量名/函数名) 1.内置名称空间 内置名称空间是python解释器独有的,存放python解释器自带的名字,如int,float,len 当Python解释器启动的时候python自动开辟内置名称空间存放了这些python的内置方法,python解释器停止解释之后才会销毁. 2.全局名称空间 除了内置和局部的名字之外,其他都存储在全局名称空间 全局需要自己定义, python文件执行之后才可能有全局名称空间,文件结束之后才会销毁 3.局部名称空间 函数内定义的变量名/函数名都存放在局部名称空间 局部也需要自己定义, 必须得在函数调用之后才会生成, 调用结束之后就会销毁 执行顺序 三种名称空间的执行顺序:内置--->全局--->局部 查找顺序 当前的所在位置开始查找,如果当前所在的位置为局部名称空间,则查找顺序为:局部--->全局--->内置 作用域 产生作用的范围 x=1 def f1() x=3 print(x) #x=1和x=3的x不是同一个东西 全局作用域:全局+内置名称空间中的变量,全局作用域中的变量只能在全局中使用 局部作用域:局部名称空间中的变量,局部作用域中的变量只能在局部中使用 x = 1 def f1(): return x print(x) def f2(): x = 2 # x

函数基础

删除回忆录丶 提交于 2019-11-26 17:34:31
目录 1. 可变长参数 1.1 可变长参数之* 1.2 可变长参数之** 1.3 可变长参数*和**联用 1.4 了解 2. 函数对象 2.1 函数对象的四大功能 2.1.1 引用 2.1.2 可以当作容器类型的元素 2.1.3 当作参数传给一个函数 2.1.4 可以当作函数的返回值 3. 函数的嵌套 4. 名称空间和作用域 4.1 名称空间 4.1.1 内置名称空间 4.1.2 全局名称空间 4.1.3 局部名称空间 4.2 三种名称空间的执行顺序 4.3 三种名称空间的查找顺序 4.4 作用域 4.4.1 全局作用域 4.4.2 局部作用域 4.4.3 global 和 nonlocal 4.4.4 建议使用 1. 可变长参数 可变长参数:指的是在调用函数时,传入的参数个数可以不固定 调用函数时,传值的方式分为两种,一种是位置实参,另一种是关键字实参,因此形参也必须得有两种解决方法,以此来分别接收溢出的位置实参(*)与关键字实参(**) 1.1 可变长参数之* # def func(name,pwd,*abc): # *abc会接受多余的位置实参,尽量不要使用abc,而应带使用args,args是约定俗成的 def func(name,pwd,*args): print('name:',name,'pwd:',pwd) print(args) return 1 res =

Python20之全局变量和局部变量

你说的曾经没有我的故事 提交于 2019-11-26 17:23:42
一、局部变量和全局变量   局部变量:是指在函数体内定义的变量,作用域只在该函数体内部   全局变量:是指在函数体外定义的变量,作用域是整个代码段 所以在函数体内可以直接访问全局变量而不可以在函数体外访问局部变量 二、在函数体内对全局变量进行修改   在函数体内对全局变量进行修改时,Python程序会自动生成一个与全局变量名一样的局部变量,从而达到对全局变量保护(在函数体内的操作不会改变全局变量的值)的作用,不过 可以在局部变量中使用global关键字,修改全局变量 ,代码如下 1 x = 1 2 def function(): 3 x = 5 4 print(x) 5 6 >>> function() 7 5 8 >>> print(x) 9 1 View Code global关键字 1 x = 1 2 def function(): 3 globals x 4 x = 5 5 print(x) 6 7 function() 8 5 9 >>> x 10 5 View Code 来源: https://www.cnblogs.com/ksht-wdyx/p/11329003.html

python-day12 作用域和名称空间

*爱你&永不变心* 提交于 2019-11-26 14:23:53
名称空间 名称空间:放名字的一个空间,不仅仅存变量,还包含了函数名,类名,引入的模块 在内部生成一块内存,用来存放程序, 类别 1.全局名称空间 在py中写的函数,变量… 2.内置名称空间 例如print就是一个内置函数,python解释器提供好的一些内置的内容,包括print,input… 3.局部名称空间 函数内部的变量等,不一定会产生,例如写了一个函数,没有去调用它,函数内部的变量就不会产生,在执行函数的时候会产生一个局部名称空间,存放函数内部的变量,函数… 局部空间是独立的,一般互不干扰 ### ######################################################### 名称空间可能会有无数个,全局空间和内置空间只有一份,局部名称空间可以有无数个, a = 10 #首先产生一个变量 10,19对应的名称就是a,a是一个指针,指向对应的值在内存中的位置,存放的是内存地址,放置10的位置 #都放在一个全局名称空间 作用域 全局作用域 内置+全局作用域 局部作用域 局部自己使用,函数内部的 函数中的变量就是在局部域中,局部可以找全局但是全局不能找局部 比方在函数中定义了一个变量,然后调用这个函数,函数内部的变量被加载在局部域中,然后在后面用print打印这个变量,就会报错,因为print打印在全局域中找不到这个变量

Java 多线程,线程局部变量。

假装没事ソ 提交于 2019-11-26 12:46:56
1. 静态变量 public staitc final SimpleDateFormat sdf = new SimpleDateFormat ("yyyy-MM-dd");   1.1如果两个线程都执行:     String str = sdf.format(new Date());     此时sdf的内部数据结构可能会被并发访问破坏。     线程内局部变量:       public staitc final ThreadLocal<SimpleDateFormat> sdf = ThreadLocal.withInitial(() -> new SimpleDateFormat("yyyy-MM-dd"));     使用:     String str = sdf.get().format(new Date()); 2.java,util,Random 生成随机数也最好用上面的方法,否则两个线程等待一个共享随机数生成器,效率很低。   java7后支持一下方法:     int random = ThreadLocalRandom.current().nextInt(upperBound); 来源: https://www.cnblogs.com/lovleo/p/11320653.html

ASM Core Api 详解

半世苍凉 提交于 2019-11-26 07:19:08
前言 前面一篇文章 ASM 简介 对 ASM 框架做了简单的介绍。 本篇文章主要对该框架的 Core Api 其中重要的一些类进行详细的介绍,让大家可以更得心应手的使用 ASM。 在开始之前,让我们先回顾一下 ASM Core Api 调用流程: ASM 提供了一个类ClassReader可以方便地让我们对class文件进行读取与解析; ASM 在ClassReader解析class文件过程中,解析到某一个结构就会通知到ClassVisitor的相应方法(eg:解析到类方法时,就会回调ClassVisitor.visitMethod方法); 可以通过更改ClassVisitor中相应结构方法返回值,实现对类的代码切入(eg:更改ClassVisitor.visitMethod()方法的默认返回值MethodVisitor实例,通过操作该自定义MethodVisitor从而实现对原方法的改写); 其它的结构遍历也如同ClassVisitor; 通过ClassWriter的toByteArray()方法,得到class文件的字节码内容,最后通过文件流写入方式覆盖掉原先的内容,实现class文件的改写。 以上,就是 ASM Core Api 的整体运作流程。 接下来,我将对其中涉及到的重要的类进行详细解析。 ClassReader ClassReader

Java——内部类详解

不打扰是莪最后的温柔 提交于 2019-11-25 23:38:30
说起内部类,大家肯定感觉熟悉又陌生,因为一定在很多框架源码中有看到别人使用过,但又感觉自己使用的比较少,今天我就带你具体来看看内部类。 内部类基础 所谓内部类就是在类的内部继续定义其他内部结构类。 在 Java 中,广泛意义上的内部类一般来说包括这四种:成员内部类、局部内部类、匿名内部类和静态内部类。下面就先来了解一下这四种内部类的用法。 成员内部类 成员内部类是最普通的内部类,它的定义为位于另一个类的内部,具体使用如下: class Circle { double radius = 0; public Circle(double radius) { this.radius = radius; } /** * 内部类 */ class Draw { public void drawSahpe() { System.out.println("drawshape"); } } } 这样看起来,类 Draw 像是类 Circle 的一个成员, Circle 称为外部类。成员内部类可以无条件访问外部类的所有成员属性和成员方法(包括 private 成员和静态成员),例如: class Circle { private double radius = 0; public static int count =1; public Circle(double radius) { this

Python函数

可紊 提交于 2019-11-25 22:23:50
函数是一段可以重复使用的代码,通过传递的参数返回不同的结果,函数能够提高应用的模块性和代码的重复利用率。 博文大纲: 一、函数 二、变量的作用域 三、内建函数 四、特殊函数——lambda函数 一、函数 Python中的函数都是语句和表达式的集合。函数的用法并没有限制,使用方法就像Python中其他值一样,对于重复使用的代码,需要编写为自定义函数以便于重复使用。 在CentOS 7系统(默认是Python 2.7.5)中实现! 函数可以分为: 无参函数; 有参函数; 1.无参函数 (1)自定义无参函数,语法格式如下: def 函数名称(): 代码块 return 表达式 以关键字def开始,后面跟函数名和小括号,以冒号开头并缩进,最后使用return退出函数,有表达式则传递返回值,没有则返回None。函数是以字母、数字和下划线组成的字符串,但是不能以数字开头。 无参函数的调用语法如下: [变量 = ] 函数名称() 使用赋值运算符“=”可以获得函数的返回值,使用函数是必须先定义再调用,否则程序会出现错误。 实例: [root@localhost ~]# vim 1.py #coding:utf-8 def add(): //定义函数 op1=10 op2=20 rt=op1+op2 print op1,'+',op2,'=',rt return add() //调用函数 [root

python中的函数作用域

旧街凉风 提交于 2019-11-25 19:13:33
1.作用域的介绍:# 也叫名称空间 全局名称空间:创建的储存"变量名与值的关系"的空间叫做全局名称空间 # 局部名称空间:在函数的运行中开辟出来的空间叫做局部名称空间 #并非单指函数,例如在模块中,在类中的简单赋值操作都是局部作用域 内置名称空间:内置名称空间中存放了python解释器为我们储存的的函数,例如len(),print(),list()...都是python为我们创建好的内置函数。 python中的作用域分4中情况: * L : local,局部作用域,函数中定义的变量 * E : enclosing,嵌套的父级函数的局部作用域,即包含此函数的上级函数的局部作用域,但不是全局的(闭包常见) * G : globa,全局变量,是模块级别定义的变量 * B : bulit-in,系统固定模块里的变量,就是内置空间定义的 int(),print(),list() 加载变量的优先级顺序依次是:python内置作用域>当前模块中的全局(文件从上而下读取)>外层作用域>局部作用域 搜索变量的优先级顺序依次是:作用域局部>外层作用域>当前模块中的全局>python内置作用域,也就是LEJB local 和 enciosing 是相对的,enclosing 变量相对上层来说也是 local 内置作用域 : x = int(2.9)# int就是内置作用域。(bulit-in)