Files
Python-Notes/Note.md
2024-10-21 14:32:58 +08:00

2.4 KiB
Raw Blame History

Python VS (Java or C++)

语法简单

  • Python

    print('Hello world')
    
  • C++

    #include<iostream>
    using namespace std;
    int main(){
      cout << "Hello world!" << endl;
      return 0;
    }
    
  • Java

    public class HelloWorld {
        public static void main(String[] args) {
            System.out.println("Hello, World!");
        }
    }
    

解释型语言 无需编译

解释型语言Python不需要在运行前编译成机器码代码可以直接由解释器逐行翻译并执行

  • 简单说就是写好的代码可以直接运行。比如一个代码文件test.py直接通过python test.py就能运行这段代码

编译型语言C++、Java在运行前需要将源代码编译成机器码或字节码生成可执行文件用来执行

  • 写好的代码不能直接运行要先变成可执行文件才能运行。比如一个文件test.java或test.cpp
    • Java通过javac test.java生成一个test.class的字节码之后使用java test.class来执行这个字节码,才能运行代码
    • C++:通过g++ test.cpp生成一个可执行文件test.exe (Windows系统)或test (Linux系统),之后执行这个文件来运行代码

实际使用中的区别

  • Python相比Java和C++,通常运行速度比较慢,但是好处是修改代码后可以立即看到变化,不需要改一次编译一次。个别大型项目,编译一次需要几个小时。

  • Python不需要显式的指定变量的类型

    • Python:

      a = '1'  # a为str类型
      b = '2'  # b为str类型
      b = 3  # b可以被直接修改为int类型
      
      print(a+b)  # 报错不同数据类型之间不能运算说明python是强类型的
      
    • C++

      char a = '1';  // a为str类型
      char b = '2';  // b为str类型
      b = 3;  // 报错b已经被声明为char就不能用int对他赋值
      
      int b = 3; // 这样是可以的,因为重新声明了变量类型
      print(a+b)  // 报错不同数据类型之间不能运算说明C++也是强类型的
      

    出现这个现象的原因是Python逐行翻译并执行,每一行的内容会依次生效,变量的内存空间是实时分配的。而C++等语言需要提前编译,编译的过程中为每一个变量预先分配了内存,而不同类型的变量在内存中占用的大小不一致,因此不能通过赋值修改变量类型。