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的空间具体怎么释放也不用关心。
    不知道理解的对不对,还请多指教。

posted @ 2021-12-08 14:47  桥下听雨  阅读(35)  评论(0编辑  收藏  举报