1.Python
①解释型语言
程序不需要在运行前编译,在运行程序的时候才翻译,专门的解释器负责在每个语句执行的时候解释程序代码。这样解释型语言每执行一次就要翻译一次,运行效率相对较低。
②动态数据类型
支持重载运算符,也支持泛型设计。(运算符重载,就是对已有的运算符重新进行定义,赋予其另一种功能,以适应不同的数据类型。泛型设计就是定义的时候不需要指定类型,在客户端使用的时候再去指定类型)
③完全面向对象的语言
函数,模块,数字,字符串都是对象,在Python中,一切皆对象
完全支持继承,重载,多重继承
④拥有强大的标准库
Python语言的核心只包含数字,字符串,列表,元祖,字典,集合,文件等常见类型和函数,而由Python标准库提供了系统管理,网络通信,文本处理,数据库接口,图形系统,XML处理等额外的功能。
⑤社区提供了大量第三方库
Python 社区提供了大量的第三方模块,使用方式与标准库类似。它们的功能覆盖 科学计算、人工智能、机器学习、Web 开发、数据库接口、图形系统 多个领域。
2.Golang
①静态强类型、编译型、并发型
静态类型语言,但是有动态语言的感觉。(静态类型的语言就是可以在编译的时候检查出来隐藏的大多数问题,动态语言的感觉就是有很多的包可以使用,写起来的效率很高)
可直接编译成机器码,不依赖其他库,glibc的版本有一定要求,部署就是扔一个文件上去就完成了。
语言层面支持并发,这个就是Go最大的特色,天生的支持并发。Go就是基因里面支持的并发,可以充分的利用多核,很容易的使用并发。
②垃圾回收机制
内置runtime,支持垃圾回收,这属于动态语言的特性之一吧,虽然目前来说GC(内存垃圾回收机制)不算完美,但是足以应付我们所能遇到的大多数情况。
③支持面向对象编程
有接口类型和实现类型的概念,但是用嵌入替代了继承。
④丰富的标准库
Go目前已经内置了大量的库,特别是网络库非常强大。
⑤内嵌C支持
Go里面也可以直接包含C代码,利用现有的丰富的C库
Python
30个关键字
and exec not
assert finally or
break for pass
class from print
continue global raise
def if return
del import try
elif in while
else is with
except lambda yield
Golang
25个关键字
break default func interface select
case defer go map struct
chan else goto package switch
const fallthrough if range type
continue for import return var
Python是动态语言,所以在定义变量的时候不需要申明类型,直接使用即可。
Python会根据值判断类型。
name = "Zeta" # 字符串变量
age = 38 # 整数
income = 1.23 # 浮点数
多变量赋值
a,b = 1,2 # a=1; b=2
c = d = 3 # c=3; d=3
Go是静态语言,是强类型的,但是Go语言也允许在赋值变量时确定类型。
因此Go有多种申明变量的方式
// 1. 完整的申明并赋值
var a int
a = 1
// 2. 声明变量类型同时赋值
var a int = 1
// 3. 不声明类型,赋值时确定
var a = 1
// 4. 不用 var 关键字申明变量并赋值后确定类型
a := 1
注意,Go中的new关键字并不是声明变量,而是返回该类型的指针
a := new(int) //这时候a是一个*int指针变量
Boolean(布尔值)
Number(数字)
String(字符串)
List(列表)
Tuple(元组)
Set(集合)
Dictionary(字典)
boolean(布尔值)
numeric(数字)
string(字符串)
数组(数组)
slice(切片:不定长数组)
map(字典)
struct(结构体)
pointer(指针)
function(函数)
interface(接口)
channel(通道)
Python中的List列表对应Go语言中的Slice切片
Python中的Dictionary字典对应Go语言中的map
有一些值得注意的地方:
Go是支持函数编程的语言,所以在Go语言中函数是一个类型
Go语言不是面向对象的语言,没有定义类的关键字Class,要实现OOP风格编程,是通过struct、interface类型实现的
Python中的元组和集合在Go中都没有
channel是Go里独有的类型,多线程之间的通信就靠它
1.Python
①网络编程
web应用,网络爬虫
②数据分析和机器学习
③自动化测试
④自动化运维
2.Golang
①服务器编程
处理日志、数据打包、虚拟机处理、文件系统等。
②分布式系统,数据库代理器等
③网络编程
这一块目前应用最广,包括Web应用、API应用、下载应用。
④内存数据库
如google开发的groupcache,couchbase的部分组建。
⑥云平台