笔者花了三个多月的时间学了一把 Python,在学习过程中总是拿已习得的 Java 做对比,惊异于 Python 的简单与强大,决定后期定要继续深入学习 Python。现在以自己所学做一下总结。
关于 Python
官方对 Python 的介绍如下:
Python 是一款易于学习且功能强大的编程语言。它具有高效率的数据结构,能简单又有效地面向对象编程。
Python 简洁的语法与动态输入之特性,加之其解释性语言的本质,使其成为一种在多领域与绝大多数平台都能 进行脚本编写 与 应用快速开发工作 的理想语言。
Python 特色
- 简单:具备伪代码的特质;
- 易于学习:有一套极其简单的语法体系;
- 自由且开放:是 FLOSS (自由/开放源代码软件) 成员之一;
- 高级语言:不必考虑诸如程序应当如何使用内存等底层细节;
- 跨平台性:由于其开源特性,已被移植到其它诸多平台;
- 解释性:不需要像 C/C++ 语言将源代码最终编译成二进制码,只需要直接从源代码 运行 该程序。在程序内部,Python 会将源代码转换为字节码的中间形式,而后在转换为电脑所用的语言;
- 面向对象:同时支持面向过程和面向对象编程;
- 可扩展性:可将 C/C++ 程序运用于 Python 程序;
- 可嵌入性:可在 C/C++ 程序中嵌入 Python,从而向你的程序用户提供 脚本 功能;
- 丰富的库:Python 标准库规模庞大,还可以在 [Python库索引] 中发掘许多其它高质量的库。
Python 基础
以下将介绍下Python变量、基本数据类型、运算符、控制流。
变量
变量时标识符的一个例子。标识符命名规则:以字母或下划线( _ )开头,其余字母为数字、字符、下划线组成。
Python 中的变量具有这样几个特点:
- 可以表示任意数据类型;
- 用‘=’可将同一个变量反复赋值,并且可以是任意数据类型;
Python变量能指向任何类型变量,决定Python是一种动态语言。
动态语言 vs 静态语言:
- 动态语言 - 变量本身类型不固定的语言,如 Python;
- 静态语言 - 在定义变量时必须指定类型,并且赋值时类型不匹配会报错,如 Java .
Python 中变量分两种:
- 局部变量:作用范围有限,如函数中声明的变量;
- 全局变量:在程序的顶层赋值,不存在任何作用域,类或函数。用 global 修饰。
基本数据类型
Python 几种数据类型有整数、浮点数、字符串、布尔值和空值。这里不一一介绍,以一张导图说明各类型使用。
基本数据类型.png
这里重点说下 空值None 。Python 中 None 可以作为 if 条件语句,返回 False,其他非 None 的任何变量作为 if 条件语句,会返回 True。示例如下:
if None:
print('False')
elif 'abc':
print('True')
elif 2:
print('True')
运算符
以下列举几种常见的运算符,对于位移运算、位运算等这里不做说明。
运算符.png
这里重点说下 '*' 运算符,可以返回 字符串重复指定次数的结果,如:
print('ab' * 3) # ababab
Python 中也可以使用 变量 运算 = 表达式 这种结构,如:
a = a * 2 -> a *= 2
控制流
Python 中有三种控制流语句——if、 for 和 while 。
这里重点说下 for...in.. 循环,能用于任何工作队列,常常使用内置的 range 方法生成一串数字列表,示例代码如下:
for x in range(1, 5):
print(x, end = ' ')
# 打印结果:1 2 3 4
Python 数据结构
Python 中有四种数据结构对象:list(列表), tuple(元组), dict(字典) 和 set(集合)。
list 列表
定义:Python 内置的一种数据类型列表,用 [] 表示。
特点:有序集合;随时可添加和删除元素;一种可变的数据类型。
常见用法:
- list0 = ['Jane', 'June', 'July'] - 列表定义;
- len(list0) - 获取列表元素个数;
- list[index] - 用索引获取某个元素,越界抛异常,0表示第一个;
- list[-index] - 用负索引获取倒数第index个元素,如最后一个元素用-1索引,越界抛异常;
- list.insert(index, 'Jack') - 把元素插入到索引为 index 的位置;
- list.pop(index) - 删除指定索引为 index 的元素;
- del list[index] - 删除指定元素 list[index];
- list.pop() - 删除末尾元素;
- list[index] = 'val' - 给index位置元素赋值;
- list0 = [] - 表示空数组;
Tips: list 中可以存放不通数据类型元素;其元素也可以是一个 list,如果便是一个二维数组形式。
示例代码如下:
animals = ['cat', 'dog', 'parrot', 'bird']
print('There are', len(animals), 'kind of animal')
print(animals[2]) # parrot
animals.insert(2, 'sheep')
print(animals) # ['cat', 'dog', 'sheep', 'parrot', 'bird']
print('These animals are:', end = ' ') # 打印不换行
for animal in animals:
print(animal, end = ' ')
# 打印:These animals are: cat dog parrot bird
animals.sort() # 列表排序
print('Sorted list is', animals) # ['bird', 'cat', 'dog', 'parrot']
del animals[2]
print(animas) # ['bird', 'cat', 'dog']
tuple 元组
定义:也是 Python 内置的一种有序列表,用 () 表示。
特点:一旦初始化就不能改变。因为不可变性,所以代码更安全。
常见用法:
- tuple0 = ('Cindy', 'Coral', 'Xss'):元素定义;
- tuple0[index] - 获取元素;
- tuple0 = () - 表示空元组;
- tuple = (1, ) - 当元组中仅有一个元素,需要加逗号区别;Python 中会将 (1) 识别为 1 这个数字;
Tips:
- 因不可修改性,所以没有 append(), insert() 以及赋值给某个某诉等修改元组的方法;
- tuple = (1, 's', ['a', 'b']) 元组中也可存放不同类型数据。当有列表元素时,列表中的元素可以改变,但列表本身不能改变,如指向另一个列表。
示例代码如下:
animals = ('cat', 'dog', 'bird')
new_animal = ('sheep', )
new_animals = animals, new_animal
print(new_animals) # (('cat', 'dog', 'bird'), ('sheep',))
print(new_animals[2][0]) # sheep
print(animals, 'sheep') # (('cat', 'dog', 'bird'), 'sheep')
dict 字典
定义:Python 内置字典,对应其它语言的 map,用 {} 表示。
特点:使用 key - value 键值对存储,具有极快的查找速度。
常见用法:
- dict = {'Jane': 96, 'July': 85, 'Juce': 100} - 字典定义;
- dict[key] - 获取key对应的元素值;;
- dict[key] = 'value' - 给某个key对应的value赋值;
- pop(key) - 删除一组键值对;
区别于list列表的几个点:
1)查找和插入的速度极快,不会随着 key的增加而变慢;list元素越多查找和插入时间越长;
2)dict 需要占用大量内存,内存浪费多;list占用空间小,浪费也很少。
Tips:
- 一个 key 只对应一个 value,所以多次对一个key放入value,后面的值会覆盖前面的值;
-
若 key 不存在,dict会报错: KeyError;判断key是否存在方法:
- 通过 in 判断:exist = key in dict;
- 通过 dict.get()方法判断:exist = (dict.get(key) == None)
- dict 是无序的,其元素存放的顺序和 key 放入的顺序是无关的;
- dict 的key必须是不可变对象,list是可变的不能作为key;通过key计算位置的算法称为 哈希算法。
示例代码如下:
student = {'s01': 'Amy', 's02': 'Cindy', 's03': 'Bob'}
print('s01 is', student['s01']))
for number, name in student.items():
print('{} is Student {}'.format(number, name))
if 's01' in student: # 判断某个key值是否存在用 in
print('s01 is', student('s01'))
del student['s03'] # 删除一对键值对
set 集合
定义:类似于 dict,也是一组无序 key 的集合。用 {} 表示。
特点:不存储 value,key也不能重复;创建一个 set,需要提供一个 list 作为输入集合。
常见用法:
- set = set([1, 2, 2, 3]) - 定义,需要传入一个list,重复元素会自动被过滤,输出形式:{1, 2, 3}
- set.add(key) - 添加元素到 set,可以添加重复元素,但是最终会被过滤;
- set.remove(key) - 删除元素;
- 两个set可以做数学意义上的交集、并集等操作,最后得到的也是 set;
代码如下:
s1 = set([1, 2])
s2 = set([2, 3])
print(s1 & s2) # {2}
print(s1 | s2) # {1, 2, 3}
Tips: set 和 dict 的唯一区别是set没有存储对应的 value;同样不能存放可变对象。
Python 输入和输出
以一张图来展示输入和输出的使用说明:
输入和输出.png
示例代码:
in_str = input('Enter text: ')
print(in_str)
# 执行命令:python io_input.py
# 提示输入:Enter text: Hello, world !
# 打印:Hello, world !
网友评论