公司目前主要开发Android相关的产品,因此应用程序主要用Android,底层开发主要用C/C++;对于Python,则很少涉及。
目前在做的项目,需要Python+UiAutomator做Android自动化测试,才与Python结缘,相见恨晚呀。
所以,准备和部门同事一起学习Python这么语言。
在准备推广一门语言的时候,大家第一反应就是为什么要学Python?
对,一定要说服大伙要好好学习Python,忽悠点什么好呢?还真是不知道怎么讲呢
好吧,我把我知道的Python好处都告诉大家,
第一,很多人都在用Python, 2017年Github上在最受欢迎的15门语言中,跃升第二名。第二名,OH, MY God, 用的人多吧?大家都喜欢它,事实胜于雄辩。
第二,Python简单易学习,甚至是儿童学习编程的入门语言。所以,市面上出了一些书,类似“跟孩子一些学Python”,简单吧,小孩子都学得会。
上面两点,充分说明了Python的优点:使用者众多(或者 应用场合众多),最关键的是,小屁孩也学得会 (难道还不如“小屁孩”?加油啊,叔叔阿姨)。
从专业角度而言,Python有很多类库,分为标准类库和第三方类库,仅仅标准类库(https://docs.python.org/3/library/index.html)就已经丰富的不得了,不用想,第三方的类库更丰富,毕竟“劳动人民的创造力是无穷的”;所以,从基础的数学运算/字符操作,到AI语音/图像识别,无一不能;不管是农业/工业/军事,都可以看到Python的身影。
相较于C语言,Python足够简单,但拥有C/C++语言的一样强大的编程能力(虽然速度不及C),什么函数/面向对象/数据类型,等等,Python都有。
相较于脚本语言(如batch,shell),虽然大家都叫“脚本语言”,但是其他脚本语言只是各种工具的粘合剂,不能呼叫类库,更没有类的概念,所以,Python真的真的不屑于和脚本语言为伍(Python高傲地想)。
好了,废话这么多,大家知道Python的好了吗?简而言之,好学,易用,功能强大。
正文开始,第一讲大概1个小时(作演讲报告),主要内容包括,
1. 环境搭建;
2. 基础语法;
3. 基本变量类型。
一、环境搭建
Ubuntu已经内置Python, 所以Ubuntu用户无需操心;
Windows用户只需要从Python官网(https://www.python.org/)下载对应的安装程序,即可直接安装,推荐大家使用Python 3.x,毕竟是未来趋势。安装完成后,设置环境变量,就可以在CMD中直接输入python来进行操作了。
另外,关于编辑器,推荐Geany, 大家也可以使用PyCharm. PyCharm更像程序员使用的IDE环境,
二、基础语法
首先强调的是 缩进。其他很多语言的代码块,比如C使用{}来标识代码块,但是Python使用缩进标识代码块,很多刚接触Python的新人,都会遇到一些“IndentationError”的错误,这就是代码块的缩进不一致造成的。
第二,Python单行注释使用“#”,多行注释使用三个单引号(''')或者三个双引号(""")。
第三,交互式编程,可以在命令行窗口输入指令,一行一行执行,如下,
$ python
Python 2.7.6 (default, Sep 9 2014, 15:04:36)
[GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.39)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> print "Hello, Python!";
Hello, Python!
第四,脚本式编程,
通过脚本参数调用解释器开始执行脚本,直到脚本执行完毕
。
$ python test.py
第五,标识符由字母、数字、下划线组成;所有标识符可以包括英文、数字以及下划线(_),但不能以数字开头;标识符是区分大小写的;也不能使用关键字作为标识符。
这个规则和大多数编程语言规则类似。下面的稍微特殊,需要注意,
以单下划线开头 _foo 的代表不能直接访问的类属性,需通过类提供的接口进行访问,不能用 from xxx import * 而导入;
以双下划线开头的 __foo 代表类的私有成员;
以双下划线开头和结尾的 __foo__ 代表 Python 里特殊方法专用的标识,如 __init__() 代表类的构造函数
第六,Python 可以使用引号( ' )、双引号( " )、三引号( ''' 或 """ ) 来表示字符串,引号的开始与结束必须的相同类型的。
第七,多行语句
Python语句中一般以新行作为为语句的结束符。
但是我们可以使用斜杠( \)将一行的语句分为多行显示,如下所示:
total = item_one + \
item_two + \
item_three
语句中包含 [], {} 或 () 括号就不需要使用多行连接符。如下实例:
days = ['Monday', 'Tuesday', 'Wednesday',
'Thursday', 'Friday']
第八,同一行显示多条语句
Python可以在同一行中使用多条语句,语句之间使用分号(;)分割,以下是一个简单的实例
#!/usr/bin/python
import sys; x = 'runoob'; sys.stdout.write(x + '\n')
三、基本变量类型
和大多数语言不一样,Python在声明变量的时候不需要指明数据类型,系统会自动判断,好处是简单,当然也需要额外小心,后文会再述。
Python有五个标准的数据类型:
1. Numbers(数字)
2. String(字符串)
3. List(列表)
4. Tuple(元组)
5. Dictionary(字典)
先看看数字类型,数字类型又可以分为,在声明变量的时候,由于不需要指定数据类型,所以不同的数据有不同的表示方法,参考如下示例,
int(有符号整型)
long(长整型[也可以代表八进制和十六进制])
float(浮点型)
complex(复数)
var1 = 10 # 整数类型
var2 = 10L # 长整数类型
var3 = 10.0 # 浮点数类型
var4 = 3.14j # 复数类型
再看看 String(字符串),
字符串或串(String)是由数字、字母、下划线组成的一串字符。
python的字串列表有2种取值顺序:
1. 从左到右索引默认0开始的,最大范围是字符串长度少1
2. 从右到左索引默认-1开始的,最大范围是字符串开头
可以使用变量 [头下标:尾下标],就可以截取相应的字符串
加号(+)是字符串连接运算符,星号(*)是重复操作。如下实例:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
str = 'Hello World!'
print str # 输出完整字符串
print str[0] # 输出字符串中的第一个字符
print str[2:5] # 输出字符串中第三个至第五个之间的字符串
print str[2:] # 输出从第三个字符开始的字符串
print str * 2 # 输出字符串两次
print str + "TEST" # 输出连接的字符串
输出结果如下,
Hello World!
H
llo
llo World!
Hello World!Hello World!
Hello World!TEST
下面再看看 列表,
列表( List ) 是 Python 中使用最频繁的数据类型。
列表可以完成大多数集合类的数据结构实现。它支持字符,数字,字符串甚至可以包含列表(即嵌套)。
列表用 [ ] 标识,是 python 最通用的复合数据类型。
列表中值的切割也可以用到变量 [头下标:尾下标] ,就可以截取相应的列表,从左到右索引默认 0 开始,从右到左索引默认 -1 开始,下标可以为空表示取到头或尾。
加号 + 是列表连接运算符,星号 * 是重复操作。如下实例:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
list = [ 'runoob', 786 , 2.23, 'john', 70.2 ]
tinylist = [123, 'john']
print list # 输出完整列表
print list[0] # 输出列表的第一个元素
print list[1:3] # 输出第二个至第三个的元素
print list[2:] # 输出从第三个开始至列表末尾的所有元素
print tinylist * 2 # 输出列表两次
print list + tinylist # 打印组合的列表
输出结果如下,
'runoob', 786, 2.23, 'john', 70.2]
runoob
[786, 2.23]
[2.23, 'john', 70.2]
[123, 'john', 123, 'john']
['runoob', 786, 2.23, 'john', 70.2, 123, 'john']
再来看看元组,
元组(Tuple)是另一个数据类型,类似于List(列表)。元组用"()"标识。内部元素用逗号隔开。但是元组不能二次赋值,相当于只读列表。
#!/usr/bin/python
# -*- coding: UTF-8 -*-
tuple = ( 'runoob', 786 , 2.23, 'john', 70.2 )
tinytuple = (123, 'john')
print tuple # 输出完整元组
print tuple[0] # 输出元组的第一个元素
print tuple[1:3] # 输出第二个至第三个的元素
print tuple[2:] # 输出从第三个开始至列表末尾的所有元素
print tinytuple * 2 # 输出元组两次
print tuple + tinytuple # 打印组合的元组
输出结果如下,
('runoob', 786, 2.23, 'john', 70.2)
runoob
(786, 2.23)
(2.23, 'john', 70.2)
(123, 'john', 123, 'john')
('runoob', 786, 2.23, 'john', 70.2, 123, 'john')
最后再看看 字典,
字典(dictionary)是除列表以外python之中最灵活的内置数据结构类型。列表是有序的对象集合,字典是无序的对象集合。
两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。
字典用"{ }"标识。字典由索引(key)和它对应的值value组成。
#!/usr/bin/python
# -*- coding: UTF-8 -*-
dict = {}
dict['one'] = "This is one"
dict[2] = "This is two"
tinydict = {'name': 'john','code':6734, 'dept': 'sales'}
print dict['one'] # 输出键为'one' 的值
print dict[2] # 输出键为 2 的值
print tinydict # 输出完整的字典
print tinydict.keys() # 输出所有键
print tinydict.values() # 输出所有值
输出结果如下,
This is one
This is two
{'dept': 'sales', 'code': 6734, 'name': 'john'}
['dept', 'code', 'name']
['sales', 6734, 'john']
今天就讲怎么多,收工!
参考: