语法:Python与C++对比

目录

一、概述

二、语句

三、函数

四、数据结构

五、类


一、概述

Python和C++都是面向对象的。

Python和C++的区别:

  • Python是脚本语言,脚本语言不需要编译,直接解释执行,由解释器来负责解释。程序代码即是脚本程序,也是可执行文件,只需要编写-运行。
  • C++是编译型编程语言,需要编译成二进制代码,以可执行文件形式运行,需要经过编写-编译-链接-运行的过程。             

从语法角度来说:Python更加灵活;C++逻辑更加清晰。

Python  C++

import cmath

导入模块,每一个.py文件都可以认为是一个模块。Python中导入的模块可以是类的定义,函数的定义。

#include

引入头文件,头文件为类或函数的声明。

C++支持分离式编译,对源文件分别编译成目标文件,再链接生成可执行文件。通过头文件把源文件关联起来。

在python程序中直接添加sys.path,即import时寻找模块的路径

在cmakelist中设置include_directories(),即include时寻找相应头文件的路径

在程序中添加单元测试

if __name__ == "__main__":

当模块被作为脚本直接运行时,执行之后的程序块;

当模块被其他模块导入时,不执行之后的程序块。

非常方便,可以直接将单元测试脚本写在if __name__ == "__main__":后,保证程序功能正常

C++需要有一个 main 函数来作为程序的入口。如果需要单元测试需要单独写带有main函数的源文件。
数据类型 决定数据所占内存空间的大小、布局方式、该空间能存储的值的范围、以及数据能参与的运算
对象

一切皆对象(数据类型、函数、类都是对象)。对象包含identity(Python中即为对象的内存地址,一旦创建不再改变)、类型信息、值、引用计数(用于记录当前有多少个变量在引用这个对象。一旦引用计数器为0,那么该对象就会被系统自动回收)、。

可参见:Python 中的对象概述 - 知乎

一块能存储数据并具有某种类型的内存空间
变量

在python中就是个name,Names refer to objects. Names are introduced by name binding operations.

没有类型信息,是通用的(增加python的灵活性),引用一个对象。

(即变量是对象内存地址的引用)

可参见:python中的变量、对象和引用_ColourfulPanda的博客-CSDN博客_python 引用对象

命了名的对象,即具名的、存储数据并具有某种类型的内存空间

(即变量有一个名字,并在内存中占据一定的存储单元,在该存储单元中存放变量的值)

引用 引用即别名,为已经存在的对象所起的另外一个名字,引用自身不是对象
指针 指针用来存放某个对象的地址,指针自身也是一个对象
=

name binding,名字绑定,变量存储对象的引用

对象分为可变对象和不可变对象,进行name binding时内存空间示意图可参见:Python中的变量、对象 - 汉尼拔草 - 博客园

把值赋给变量(对象)

二、基本操作

Python

C++

int最大整型\最小整型

O

备注:sys.maxsize \ -sys.maxsize-1 (跟计算机相关,可能是32位,也可能是64位)

sys.maxint \ -sys.maxint-1在python2中支持,在python3中不支持了

INT_MAX  \  (4Bytes,即32bits的最大值2^31-1)

INT_MIN  (-2^31)

float最大值\最小值

float('inf')  \

float('-inf')

FLT_MAX  \

FLT_MIN

两字符相减 字符不能直接相减,必须先用ord()函数返回字符串的ASCII值,才能相见 字符可以直接相减
/ 两个整型做“/”运算,得到浮点型的结果 两个整型做“/”运算,得到整型,相当于除完取int(),小数部分截断,即向0取整

// 地板除,即向负无穷取整

8//3 结果为2

-8//3 结果为-3

%

% 取模(modulus)

-10%3 结果为2

-90%8结果为6

% 取余

-10%3 结果为-1

-90%8结果为-2

PS:

取模(Modulus ) V.S. 取余(Remainder)

对于整型数a,b来说,取模运算或者求余运算的过程都是:

1. 求 整数商: c = a/b;  (把这里的/理解成数学意义的除。求模运算和求余运算在这一步不同:取模运算在本步骤计算c的值时,向负无穷方向舍入(向下取整);取余运算在本步骤取c的值时,向0 方向截断;

2. 计算模或者余数: r = a - c*b (本步骤取模和取余相同)

以python实现为例,取模和取余代码区别为:

# 取模,Python中可直接用%,计算模,r = a % b
def mod(a, b):    
    c = a // b
    r = a - c * b
    return r

# 取余 
def rem(a, b):
    c = int(a / b)
    r = a - c * b
    return r
  • 20
    点赞
  • 110
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yuyuelongfly

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值