C语言视点学习python 1
C语言视点学习python
本人嵌入行业出身,开发语言这块现在可以说很干净,只会C,也会一点C++,现在准备用C语言的视点来分析一下python的语法,可以说面对C/C++人的快速入门。我也就是瞎写写,给自的思路做一下整理。如果有不对的地方还请多多指点,勿喷。
这里就是整理概念,代码示例什么的请从网上参阅。
今天是文章的第一篇,也免不了俗套,要从数据类型说起。
基本数据类型
C语言: char int float long 等等
python 对不起,我所有的东西都是对象(类的实例)没有基本类型。那还了得,你让用户怎么用啊。
python提供了一些基本数据类型的类,提供日常使用。
python同时又是弱类型,在初始化赋值的时候不需要指定(可以提示)。
言归正传,说说python的基本类型。(括号里的内容为C对应的内容)
- 数(int float double 等等)
- 字符串(C char[] or C++ string类)
这里跟C的区别是没有字符char这个概念,如果网络通信时需要字符这个概念时,需要用函数转换一下。 - 布尔值 (bool) true false
- 空值 (没有对应) None 这个概念很复杂也很简单,如果想深点理解的话,请自行查阅网站资料
- list (数组概念,C++里的容器数组?)因为是对象存储,因此里面的成员可以不一样。(多态的原因?)
- tuple (const 数组概念)里面的内容不可变。里面要是存变量呢?应该可变吧
- dict(C没有这个概念,C++ map的概念)就是pair的哈希对,所以不支持下表查找
- set (C++stl里也有这个概念)
主要用于集合的交集,并集,子集的计算。
这样可以看出来,dict和set是两个比较高级的数据类型,在C++里不是基本数据类型,而在python里是基本数据类型。
C语言里的struct在C++和python里都可以用类代替。
枚举类型:python里有枚举类。 class enum Enum class enum IntEnum 等等
再次强调一下,python里所有的数据类型也都是对象,所以里面会有很多方法供我们使用。请具体查阅
关于赋值
如前文所说,python里的变量都是对象。所以本人理解对象里用的是指针指向一个内存。
所以在 a = 1 这种赋值里,概念上和C有所区别。
-
C/C++
这里的赋值是,先创造一个内存空间,然后把想要的值放到里面。如果这样的话 a=2就意味着把相同空间里的内容给改成2。 -
python
python的每次赋值,我感觉就是C++里的 new classname。他都会新生成一个内存。也就是说
a = 1 a = new classname(1)
a = 2 a = new classname(2)
这就意味着,a两次指向不同的空间,因为不涉及内存管理的问题,所以存放1的空间具体怎么释放也不用关心。
不知道理解的对不对,还请多指教。