Python中key = value的赋值原理是什么?

刚学 python。

def build_profile(first, last, **user_info):
    profile = {}
    profile['first_name'] = first
    profile['last_name'] = last
    for key, value in user_info.items():
        profile[key] = value   """问题所在行"""
    return profile

user_profile = build_profile( ‘albert’, ‘einstein’, location=‘princeton’, field=‘physics’) print(user_profile)

{‘first_name’: ‘albert’, ‘last_name’: ‘einstein’, ‘location’: ‘princeton’, ‘field’: ‘physics’}

已经测试必须 profile[key] = value 如此才可以

在问题行中:user_info 的 key 分别是 location 和 field,value 分别是 princeton physics。profile 这个字典的 key 应该是 user_info 遍历出来的 key 才对啊,那么为什么 key 要等于 value ? 我想知道这是什么原理。 谢谢大家。


Python中key = value的赋值原理是什么?

18 回复

你是不是把 profile[key] = value 与 key = value 搞混了?


Python里 key = value 的赋值原理,核心是对象引用传递,不是复制对象。

变量名 key 是一个标签,= 是把 value 这个对象的内存地址绑定给 key

举个例子:

a = [1, 2, 3]
b = a          # b 和 a 指向同一个列表对象
b.append(4)
print(a)       # [1, 2, 3, 4]  # a 也跟着变了

这里 b = a 并没有创建新列表,只是让 b 引用了 a 所引用的同一个列表对象。

如果是不可变对象(比如整数、字符串、元组),因为对象本身不可变,所以表现上像是“复制”,但底层仍然是引用:

x = 10
y = x          # y 和 x 指向同一个整数 10
y = 20         # 整数不可变,这里会让 y 指向新的整数 20,x 不变
print(x)       # 10

总结:赋值就是贴标签,多个标签可以贴到同一个对象上。

那个不是等于,是赋值

这是字典的赋值,并不是判断好么

你在说啥?

真的看文档很难吗
都不知道你在说什么

我把等于和赋值搞混了。现在明白了

谢谢,看了文档。现在明白了

看了。把赋值当成等于了。谢谢。

谢谢,这是问题所在。铜币已发。

对,这是赋值,谢谢,我才想明白。铜币已发。

单个=一般不都是赋值么,真要判断也都是==啊

程序语言里面的 = 几乎都是 assign 或者 pattern match

是的,但是我也不知道怎么就以为是“等于”了,可能是没睡醒的原因(万能的借口

这个就不是很清楚了,懂点皮毛的编程语言的数量少。但是目前来说我遇到的都是赋值这个概念。

放下电脑, 喝杯茶, 出去走走吧, 有时候陷入了一种 chaos 当时是很难爬出来的, 过后更没必要觉得自己愚蠢, 因为人总是会犯错误, 这样学到的东西才能更加记忆犹新.

这就是为啥有些语言会把赋值与比较区分开来,例如
pascal 比较用 = 赋值用 :=
ecma 比例用 == 赋值用 =

回到顶部