【C++】【Python】C++编程和Python的区别

前言

意识到Python和C++在一些数据处理方面有显著的不同,因此做一些学习记录。
扩充一下代码技能库。
部分内容为chatgpt辅助修改。


一、Python和C++的区别?

Python和C++都是非常流行的编程语言,但它们在语法、性能、类型系统、内存管理和用途上有很大的区别。以下是使用Python和C++编写的同样功能的简单程序的对比,以说明两种语言之间的一些关键区别。

二、一个简单的例子看C++和Python的区别

程序示例:计算阶乘

若使用Python来实现这个功能,我们需要如下操作:

# 操作:def关键词定义函数
def factorial(n):
	# if语句进行条件判断
    if n == 0:
		# 对返回值,不需要指定变量或返回类型,因为Python是动态类型语言
        return 1
    else:
		#使用递归调用来计算阶乘
        return n * factorial(n-1)

num = 5

# 内置的print函数用于输出结果
print("The factorial of", num, "is", factorial(num))

若使用C++来实现这个功能,我们需要如下操作:

//使用#include预处理指令包含了I/O库
#include <iostream>

// 使用数据类型明确地声明函数和变量的类型
// 因为C++是静态类型语言。
int factorial(int n) {
    if (n == 0) {
        return 1;
		//使用std::cout和std::endl来进行输出。
    } else {
        return n * factorial(n - 1);
    }
}

// 有一个main函数作为程序的入口点
int main() {
    int num = 5;
	//使用std::cout和std::endl来进行输出。
    std::cout << "The factorial of " << num << " is " << factorial(num) << std::endl;
    return 0;
}

一个例子看处理同样任务C++和Python的时间效率

Python进行运算:

import numpy as np
import time

# 使用numpy生成大型数据集
large_dataset = np.random.rand(1000000)

# 开始计时
start = time.time()

# 计算平均值
average = np.mean(large_dataset)

# 停止计时
end = time.time()

# 打印结果
print(f"Average value is: {average}")
print(f"Elapsed time: {end - start} s")

其输出为:
Average value is: 0.49985064310544974
Elapsed time: 0.00060272216796875 s

C++进行运算:

#include <iostream>
#include <vector>
#include <numeric>
#include <chrono>

int main() {
    std::vector<double> large_dataset(1000000);
    
    // 用随机数初始化数据集
    for (auto& value : large_dataset) {
        value = static_cast<double>(rand()) / RAND_MAX;
    }

    // 开始计时
    auto start = std::chrono::high_resolution_clock::now();

    // 计算总和
    double sum = std::accumulate(large_dataset.begin(), large_dataset.end(), 0.0);
    // 计算平均值
    double average = sum / large_dataset.size();
    
    // 停止计时
    auto finish = std::chrono::high_resolution_clock::now();
    std::chrono::duration<double> elapsed = finish - start;
    
    // 打印结果
    std::cout << "Average value is: " << average << std::endl;
    std::cout << "Elapsed time: " << elapsed.count() << " s\n";

    return 0;
}

其结果为
Average value is: 0.500007
Elapsed time: 0.00926654 s


其实这个结果我还挺惊讶,我本以为C++会显著的快于Python,后续可以思考一下。是不是运行的环境之类的原因,或者是给的例子太过简单了。

总结

从上面这个简单的例子中我们可以看到,C++和Python之间的主要不同有:

  1. 类型系统
    Python是动态类型的,而C++是静态类型的。这意味着在Python中,你不需要在编写代码时声明变量的类型,而在C++中你必须这么做。C, C++, Java, Rust, Swift都是静态类型语言,在编译时进行,意味着程序在运行之前就已经确定了所有变量的类型。静态类型语言在性能上有优势,因为编译器知道具体的类型信息,能够进行优化。Python, Ruby, JavaScript, PHP, Perl适合快速开发,属于动态类型的语言。
  2. 内存管理
    Python有自动内存管理和垃圾回收机制,而C++程序员需要手动管理内存。
  3. 性能
    C++通常在性能方面优于Python,特别是在需要密集计算和系统级编程的场合
  4. 语法
    Python的语法更加简单和清晰,这让它成为初学者的一个很好的选择,同时也适合快速原型开发。C++的语法更加详细,为性能优化提供了更多的控制,但也更难学习。所以先学完Python再学习C++对我来说友好。
  5. 用途
    Python在数据科学、机器学习、网络应用开发等领域非常流行。C++通常用于开发需要高性能的应用程序,如游戏引擎、高频交易系统、嵌入式系统等。
  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值