Python不用声明变量吗

作者:蔡海洋 链接:https://www.zhihu.com/question/25090486/answer/266513336
来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

Python 压根就没有变量的概念。用C或C++的变量概念去理解python就会一头雾水。
C、C++中的变量
C/C++中的变量的概念是面向内存的。所以你要声明一个变量:表明空间大小,存储的格式(整数,浮点),以及一个永久不变的名字指向这个变量。
python只有name和object
a = 3
这个语句中 a 是一个名字, 3 是一个object
这个语句其实并不是什么赋值
而是干了以下三件事

  • 创建name a
  • 创建object 3
  • 将name a 关联到 3这个object
    以后就可以用a来调用3这个object
    所有name在创建时必须关联到一个object。
    name可以在创建以后指向任何一个object(包括不同类型)。所以name本身没有类别,他关联的object是有类别的。在python中可以使用type(name)来查看name关联的object的类型。

Python的数据模型(参见手册章3)
python所有的数据都用object(对象)表示对象在创建时有以下属性标识,唯一识别,不可改变,通过id(obj)查看类型,不可改变值,根据类型形式分为mutable(可变),immutable(不可变)
Name(参见手册9.1 以及此文)
对象是用来使用的,比如参与表达式运算,或作为函数参数传递python并不直接使用object,而是使用name的间接方式:将name关联到object,然后name就可以用在表达式。一个object可以被多个name关联。name总是存在于特定的namespace中
直观比喻:
对象,就像一个人,出生时就分配身份证ID,这个终身不变。人可以有不同的name(小明,儿子,父亲,老公)但在特定情境下(namespace)都指的是同一个人。不同情境下(namespace),name可能指代不同人,比如每个家庭都有一个老公。

python语法 “=”的含义C语言中的等号是赋值,而python中的等号大不相同

等号有以下几种形式( 参见7.2 assignment operator10.3.1 )对于等号左边是单一目标的定义
在这里插入图片描述
这个与C中的把等号右边的值放入左边的存储空间的概念完全不同
在这里插入图片描述

相比C和C++语言,python的概念模型显得很特别。它让编程者,更关注与数据对象的操作,而不是数据存储。这使得编程者能快速的实现想法,而不过多专注于存储细节。当然要使用好python,就要按它的思维方式去思考,这对于从C、C++这种以内存为基础的编程模式转换过来的人来说,可能是一个挑战。但你只要用python,name vs object的思维,很多疑惑都会消除。

作者:蔡海洋 链接:https://www.zhihu.com/question/25090486/answer/266513336
来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值