python和C#的区别
首先,Python与JAVA一样,是一门开源的、跨多平台的语言。而C#本身不是开源的,且只能运行在Windows平台上。
1. 编译性
Python是一门解释性脚本语言,源代码不需要编译可以直接运行,运行时Python字节码解释器解释源代码并执行相关命令。Python的源代码文件.py可以直接运行,如果装了Python在本地的话。而C#则需要编译为IL,运行时由CLR托管运行。
2. 数据类型
Python的数据类型比较少,基本数字类型只有5种,序列类型三种:字符串,元组,列表。映射类型一种:字典。C#的内置数据类型则有很多。Python没有double类型。Python没有char或byte类型来保存单一字符或8位整型。Python有个内置的复数数字类型,C#没有。
3. 面向对象
Python中代码(字段,函数)可以不放在类中,而是直接放在.py文件下,C#不允许这么做。
4. 代码块
Python缩进,C#是大括号。
5. Switch
Python没有
6. for/foreach
Python没有foreach,Python的for循环类似于C#的foreach。要实现C#的for循环功能,Python要借助于range()函数。
7. 列表解析/切片操作
C#没有这个功能。
8. 自增/自减运算
Python不支持
9. 变量声明
Python无需显式的声明变量,在赋值时自动声明。Python也不需要变量类型声明,因为是动态类型,解释器判断类型。C#需要先声明,并指定类型,再赋值。
10. 内建函数
Python的有些内建函数,可以无需通过类而直接调用。
11. 字符串
Python的字符串符号有3种: ' " ''', 比较灵活,C#只有“。
12. 错误和异常
Python中try语句中有个else子句,C#没有。
13. 函数
Python的函数返回值相当灵活,可以根据判断条件返回不一样的数据类型,也可以以返回一个元组的形式返回多个数据类型。Python的函数没有定义返回值类型。
Python的函数可以作为参数传入函数,而C#实现类似的功能需要借委托来实现。
你可以在任何时候给Python的函数添加属性。
14. 内嵌函数
Python的函数体内仍然可以定义一个函数,称为内部/内嵌函数。
15. 函数的可变参数
Python的可变参数非常灵活,可以有非关键字可变长参数和关键字变量参数(字典)两种。C#只支持非关键字可变长参数,而且C#的可变参数都必须为同一类型。
16. 模块和文件
Python中一个文件被看作是一个独立模块,一个模块也可以被看作是一个文件。模块的文件名就是模块的名字加上扩展名.py。与其他可以导入类的语言不同,在Python中你导入的是模块或模块属性。C#中与模块功能类似的是名称空间,一个名称空间可以存在于多个文件甚至dll中,在导入名称空间后,其名称空间下的类可以直接使用。
17. 加载引用机制
因为Python代码是不编译的,因此其更适合通过设置搜索路径的方式访问其他的Python代码。而C#是通过添加引用的方式访问其他程序集中的代码。
18. 继承机制
Python支持多继承,体现了面向对象的合成的特性。C#不支持多继承。
19. 抽象性
Python不支持纯虚函数,也没有抽象方法。而C#则支持接口和抽象方法。