gpt4 book ai didi

python - 名称和值 - Go 与 Python

转载 作者:IT王子 更新时间:2023-10-29 00:58:26 24 4
gpt4 key购买 nike

在 python 中,使用以下代码,

x = 3
x='str'

允许x先指向int类型的对象,再指向str类型的对象,因为python是动态类型 . type(x) 给出值类型(3str)但不是名称类型 x

事实上,x并不存储值3,而是指向值为3int类型对象>


GO语言,语法如下,

func main() {
y := 2
fmt.Println(reflect.TypeOf(y)) // gives 'int'
y = "str" // Compile time error, because GO is static typed
}

问题:

int,名称类型y还是值类型2

最佳答案

Python 变量绑定(bind)到在程序运行过程中动态分配给它们的类的实例。因此,尤其是对于可变对象,它们仅仅是指针,其中包含有关其数据位置和所指向数据类型的信息。这就是为什么在分配一个新值时,您正在创建一个新实例(这是您的主要兴趣)并将变量名绑定(bind)到它,因此类型与相关,而不是变量本身.

>>> x = 3; id(x)
1996006560
>>> x = 'str'; id(x)
1732654458784

另一方面,Go 变量(当不是指针时)作为据点内存位置,因为语言是编译的并且变量得到一个常量“工作”来保存某种类型的信息(可以是指针作为出色地)。因此,一个变量几乎肯定会在程序中保持其内存,将具有常量数据类型属性,并且您可以说变量本身是某种类型(而不是半指针类型)。

package main
import . "fmt"
func main () {
x := "str"; Println(&x) // 0xc04203a1c0
x = "Hello world!"; Println(&x) // 0xc04203a1c0
}

关于python - 名称和值 - Go 与 Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43770667/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com