静态啥意思
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了静态啥意思相关的知识,希望对你有一定的参考价值。
静态什么意思
1)相对静止状态;非工作状态:~工作点 ~电流。2)从静态来考察研究的:~分析 参考技术A 静态变量,类中的一个属性为常量
静态方法,类中的方法前标识为STATIC时,不用声明该类对象也可调用其方法 参考技术B 关键字Static修饰的变量,方法,或者内部类都是静态的,静态的成员是隶属于类的,不属于类的实例
如:
public class A
static int i=0;
public static void main(String args[])
A.i=1;
A one =new A();
System.out.println(one.i);//输出1,不是0
静态确定范围并动态使用范围是啥意思?
【中文标题】静态确定范围并动态使用范围是啥意思?【英文标题】:What does it mean that a scope is determined statically and used dynamically?静态确定范围并动态使用范围是什么意思? 【发布时间】:2017-02-09 15:04:15 【问题描述】:这是我正在努力理解的类的 Python 文档摘录:
作用域是 Python 程序的文本区域,其中命名空间可直接访问。这里的“可直接访问”意味着对名称的非限定引用会尝试在命名空间中查找该名称。
虽然范围是静态确定的,但它们是动态使用的。
我没有完全理解作者在这个定义中所说的作用域是什么意思,什么是程序的文本区域,以及作用域是静态确定和动态使用的。我对范围有一个直观的理解,但很想完全理解文档的定义。如果有人能详细说明作者的想法,将不胜感激。
【问题讨论】:
好问题!我现在真的很想知道有人会回答什么。 【参考方案1】:“静态定义”
有全局作用域和局部作用域(我们忽略第三个)。
变量在某个函数中是全局变量还是局部变量是在函数调用之前确定的,即静态。
例如:
a = 1
b = 2
def func1():
c = 3
print func1.__code__.co_varnames # prints ('c',)
静态确定func1
有一个局部变量,其名称为c
。静态地,因为它是在函数创建后立即完成的,而不是在实际访问某个局部变量时。
这样做的后果是什么?好吧,例如,这个函数失败了:
a = 1
def func2():
print a # raises an exception
a = 2
如果作用域在 Python 中是动态的,func2
将打印 1。相反,与 print a
一致,已知 a
是一个局部变量,因此不会使用全局 a
。本地a
也不会被使用,因为它还没有被初始化。
“动态使用”
来自same document:
另一方面,名称的实际搜索是在运行时动态完成的——但是,语言定义正在向静态名称解析发展,在“编译”时,所以不要依赖动态名称解析! (其实局部变量已经是静态确定的了。)
全局变量存储在字典中。当访问全局变量 a
时,解释器会在该字典中查找键 a
。那是动态使用。
局部变量不是这样使用的。解释器事先知道一个函数有多少个变量,所以它可以给每个变量一个固定的位置。然后,访问局部变量xy
可以通过简单地取“第二个局部变量”或“第五个局部变量”来优化,而不用实际使用变量名。
【讨论】:
+1 给出了一个非常容易理解的例子。有时我希望 python 文档有更多示例,从而更具描述性。以上是关于静态啥意思的主要内容,如果未能解决你的问题,请参考以下文章