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