学习总结: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()函数。
Python的for/while循环语句包含一个else子句,其只在循环完成后执行,也就是说break语句也会跳过else块。C#中for/foreach/while循环没有else子句。

7. 列表解析/切片操作/生成器表达式

C#没有这个功能。Python的索引的最后一个字符的索引是-1,C#没类似相关功能。

8. 自增/自减运算

Python不支持

9. 变量声明

Python无需显式的声明变量,在赋值时自动声明。Python也不需要变量类型声明,因为是动态类型,解释器判断类型。C#需要先声明,并指定类型,再赋值。

10. 内建函数

Python的有些内建函数,可以无需通过类而直接调用。同样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#则支持接口和抽象方法。

20. is 关键字

Python中is用来进行引用比较,测试两个变量是否指向同一个对象。C#中用于判断类型。

21. 类型区分

Python中没有值类型与引用类型之说,所有的类型都是通过引用进行传递,区别于C#。

 22. 多态性

Python不支持方法或函数重载,其本身有默认参数功能,可以通过设置默认参数的方式实现重载相同的功能。C#支持重载。

23. 局部变量作用域

Python中判断/循环/异常语句里面定义的局部字段,在语句外依然可以访问,可能因为其为动态类型。C#需要在语句之前先声明,否则不能访问。

>>> if True:
... 	iads = 1
... else:
... 	iasd = 2
... 	
>>> iads
1
>>> iasd

你可能感兴趣的:(Python核心编程(第二版),Python)