从C+/Java到Python入门(1)

摸了很久勉强看完了Python的入门,看完了Python与C++和Java的差别之处,以此权当笔记来写这篇。如果之前就会使用C++或Java的话,这篇的文章的用处在于尝试让人快速掌握Python的基本写法和快速读懂Python的代码。但要注意只看懂这些是远远不能达到精通的(甚至不能达到你们熟悉的C++和Java的水平)。

简介

那么首先还是先介绍一下什么是Python。Python是一种面向对象的解释型动态类型计算机程序设计语言,发明与1989年,在早期由于计算机的性能的原因Python并不受欢迎,但近几年来由于计算机算力的突飞猛进,Python的计算效率不再成为它的缺点,相反的,由于Python简单易懂的语法特性和大量的库的支持(特别在人工智能领域),Python快速成为了最受欢迎的编程语言。

然后我们来说说为什么说Python效率很低(即使现在已经有了很多的优化,却仍然要比Java慢一些,比C慢很多),主要是下面两点原因:解释型编程语言,动态语言。

一个是Python是一种解释型编程语言,这就是Python效率的第一个原因。对于编译型编程语言来说,程序在编码完成后通过编译器编译为机器码,然后在对应的机器上放入内存中执行,这样编译后的语言失去了跨平台的能力(因为被编译为了对应平台的机器码),但是运行会非常快。相比之下解释型语言在编码完后为了跨平台考虑不会被编译为机器码来执行,而是由对应平台的解释器(类似于Java的JVM)来解释执行,所以解释型编程语言每次运行都要解释一次,而不是直接放入内存,得到的跨平台运行能力牺牲的就是运行效率。

还有是Python是动态语言,这点和C++,Java不同,这也就说Python在运行中可以动态改变自己的结构,改变变量,函数,对象的类型,引入新的对象,函数,甚至可以引入新的代码,这样的特性是Python的编写变得非常自由,但是对应的维护动态特性带来的就是更大的性能开销。

但虽然Python的运行效率低,但是它编写简单,易学,高效的开发效率和强大的库的支持是其他语言不能比拟的。运行效率方面也有很多方案可以进行优化。

环境

首先Python目前有两个大的版本,Python2和Python3,各自的语法有些许差别。其中Python2将在不远的将来失去支持,所以现在流行更多是的Python3,这文章也以Python3为例子。

有很多IDE可以用于编写Python,目前最流行的IDE是PyCharm。但如果觉得PyCharm太重型太臃肿的话可以使用VSCode。顺带一提,如果之前电脑中有安装IDEAJ或VisualStudio2013以后的版本的话,可以很方便地利用官方的插件让自己的IDE支持Python的编辑和调试。

基础句法

1.Python是缩进敏感的。Python中不再需要大括号来括住代码块,取而代之的是缩进和冒号。对于if语句,for语句之类的代码块,Python用冒号表示代码块的开始,然后通过相同的缩进表示代码块的内部,用缩进结束代表代码块的结束,如下图:

2.Python不需要用分号来表示一句代码的结束,取而代之的是换行,换行代表代码的结束。而如果想要在多行表示一句代码,使用反斜杠(\)来连接多行,如下图,效果将与上图一致:

3.Python中的基本的控制台打印为print(),输入为input(),其中print默认会在结束处换行,可以通过结尾加一个逗号来取消换行

4.在同一行写入多行代码可以使用分号(;),但是不推荐这么写

5.Python的注释写法为井(#)号加内容,用三个双引号或三个单引号括住可以表示多行注释

6.除了C里的加减乘除取余外,Python还引入了取整除(//)和取次方(**)两种操作,分别是返回商的整数部分(但不一定是整型数)和求n次方的结果

变量

1.Python的变量不需要显式写出类型,可以直接进行变量的定义,在运行中变量的类型也可以通过赋值来改变

2.Python支持同时对多个变量进行赋值,不只是赋给同个值,也可以赋值不同的类型不同的内容,各个值用逗号隔开

3.虽然不需要显式写出变量的类型,但是实际上Python仍然有变量的类型存在,所以仍然会遇到需要进行类型转换的时刻。大多数时候我们可以使用隐式类型转换,但是偶尔仍然需要强制类型转换,在Python中强制类型转换的写法是调用内置的转换函数如int(),float(),str(),hex(),oct()...

4.Python有六种基本数据类型(其中前三种的内容可以修改)

Number(数字)

String(字符串)

List(列表)

Tuple(元组)

Set(集合)

Dictionary(字典)

5.类似于Java的Int,Float等,Python的数据类型都是可操作的对象

6.由于上一条中说到的Python一切都是对象,所以Python可以通过双等于号调用内部的__eq__()比较其内容是否相等,通过is来比较其id是否相等

数字

1.Python支持 int、float、bool、complex(复数)四个类型,其中类似C等语言,混合运算中int会变为float类型

2.Python的float实际上是C的double类型,Python并不支持单精度的浮点数

3.Python的bool类型用True和False(注意首字母要大写)表示,且实际上bool指向了1和0,所以可以用于加减

4.复数的表示为 a+bj,其中实部和虚部都是浮点类型的,强制转换为complex(x,y),且要注意,复数不能转换会浮点数或整数,但可以使用c.real()和c.imag()返回其实部或虚部

5.Python自带一些数学函数例如sqrt()开方,abs()绝对值,sin()正弦函数,

random()随机生成 [0,1) 的一个浮点数,max(x1,x2,x3,...)返回最大值等等等等,详细去网页查找。

字符串

1.由于Python没有C之类的单字符char,所以Python的字符串既可以用单引号括住也可以用双引号括住,且类似上面的多行注释,三引号可以括住多行字符串

2.C所支持的转义字符反斜杠(\)仍然适用于Python,要注意在行尾的反斜杠表示续行符,所以若要正常表示反斜杠需要使用双反斜杠(\\)

3.Python字符串支持加号(+)连接

4.可以使用方括号加下标来取得字符串的某个字符(类似C的char*操作),可以使用[start:end]来取得字符串的子串,下标都是从0开始计算的。

5.可以使用in来查找某子串是否存在,将返回bool

6.可以使用备受欢迎(笑)的C的sprintf语法格式化输出字符串,方法是在print字符串中加入%,如下图的例子

7.print时

列表

1.在习惯上我们把它称为数组,但在Python中它叫做列表list而不是array,字符串也是一种列表

2.基础的使用方法和数组是一样的,用中括号括住各个元素,动态语言的特性让其可以在一个列表中括住不同类型的元素

3.和字符串的操作一样(其实应该反过来表述),也用方括号引用元素,也可以采用[start:end]截取字符串。

4.列表方括号实际上还有很实用的步长截取,即方括号的第三个参数,也就是从开始地方按照步长来提取元素组成新的列表,利用负数步长可以很方便地完成列表逆序,字符串逆序,且括号参数是可以缺省的。

5.通过len(L)函数可以获得列表的长度

6.L.append(x)可以在末尾插入新的元素,L.remove(x)可以删除列表中第一个匹配的x项

7.del L[x]删除的是列表的某个下标的元素

8.L.index(x)寻找目标元素的下标(找不到时会报错)

9.L.pop()默认会弹出列表的最后一个元素并返回值,可以带参数

10.L.insert(index,x),在指定下标处插入新元素

11.list还自带了可定制的排序函数L.sort(cmp=None, key=None, reverse=False),默认为小于号排序。

其中,cmp参数决定了比较的方法,一般是一个函数,相当于C/Java的比较器

key参数就是决定了用于比较的是目标对象的哪个值,数据默认是自身,字符是其对应的ascii码

reverse就是决定是否逆序排序,也就是变为从大到小排序

开始写了才发现内容真的蛮多的,明明已经精简了很多内容了。感觉作为一次性看的文章这个量就差不多了,所以先写到这里算了。下一期接着写,感觉大概要三期才能写完这么多内容呢。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180723G06SAJ00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券