我问这个只是为了澄清我的想法是否正确。
如果在运行时解释变量的类型,则语言将动态类型化。这意味着您作为程序员可以更快地编写,因为您不必每次都指定类型。示例:Perl
静态/动态绑定-下面的链接清楚地解释了静态绑定和动态绑定的区别
我想问的主要问题从这里开始。我知道静态作用域和动态作用域之间的区别。然而,当我讨论堆栈溢出时,人们说C++和Python是静态作用域的。
int void main(){
cout<<i;
int i=15;
}
int i=10;
def foo():
print(x)
x=10
x='global'
foo()
给出一个错误。
这个作用域在Python和C++中都是静态的。这些语言之间的区别与定义名称范围的开始和结束的规则有关。
在C++中,变量i
在局部定义int i=15之前被认为是全局的;
。
在Python中:在Python中,局部变量和全局变量的规则是什么?:
因此,由于变量x
是在foo()
中确定的,因此假定它是从函数foo()
开始的局部变量。可以使用global
关键字将整个函数块中的X
视为全局:
def foo():
global x # name 'x' refers to the global variable
print(x) # print global 'x'
x=10 # assign global variable
x='global'
foo() # print 'global'
foo() # print '10'
实际上,可以使用globals()
build-it函数访问全局变量x
,即使您希望在同一个函数中有一个本地名称x
:
def foo(): # name 'x' refers to the local variable
print(globals()['x']) # access the global name 'x'
x=10 # assign local variable
print(x) # print local 'x'
x='global'
foo()
为便于开发,larva采用动态类型,于是首先遇到的一个问题就是,在转化为java的时候,如何处理动态类型带来的问题。乍一看,这个不是很复杂,已经有前车之鉴了,Cython就可以把python代码直接转化成C代码,我的做法和Cython有相似之处,但考虑效率问题,做了一点修改 (虽然第一版本并不实现class语法来自定义类,不过在论述这个问题的时候,假定有自定义类,因为主要矛盾就在自定义类的属性方面
一个机器或语言是用来计算的,根据计算机模型的定义,其操作的是存储器里的数据,就现在流行的用二进制实现的计算机中(曾出现过三进制计算机),数据本质都是0和1,但机器毕竟是为人服务的,解决的是现实问题,它操作的数据需要有现实的含义,所以基本上所有语言都有类型系统,即便是汇编和机器语言,也有整数和浮点的区别 类型系统是很复杂的理论,值得用一本厚书来写,好点的资料有《类型与程序设计语言》,但我没看懂,因为
问题内容: 我对动态绑定和静态绑定感到非常困惑。我已经读过,在编译时确定对象的类型称为静态绑定,而在运行时确定它的称为动态绑定。 下面的代码会发生什么: 静态绑定还是动态绑定? 这表明什么样的多态性? 问题答案: 您的示例是 动态绑定 ,因为在运行时确定类型是什么,并调用适当的方法。 现在假设您也具有以下两种方法: 即使您更改为 这将打印出来,因为对的调用使用 静态绑定 ,并且编译器仅知道其类型。
静态绑定还是动态绑定? 这显示了什么样的多态性?
我们知道静态绑定发生在私有、静态、最终和重载的方法上,而动态绑定发生在被覆盖的方法上。但是如果我的方法只是公共的,它既不是静态的,也不是覆盖和重载的怎么办? 有人能给我解释一下print()的绑定会怎样,因为它既没有重载也没有被覆盖。
起初我是一个初学者 我看过很多教程,读过很多例子,甚至试图从JLS来理解这个主题,但我仍然有一些困惑或误解。 让我给你看我看不懂的问题。