Python(一)—— 初识Python与Python数据基础

世界上现在有上百种编程语言,Python是当今最流行的编程语言之一。

Python适合的领域

  1. Web网站和各种网络服务
  2. 系统工具和脚本
  3. 作为“胶水”语言把其他语言开发的模块包装起来方便使用

Python不适合的领域

  1. 贴近硬件的代码(首选C语言)
  2. 移动开发:iOS/Android有各自的开发语言(ObjC,Seift/Java)
  3. 游戏开发:C/C++

Python(一)—— 初识Python与Python数据基础_第1张图片

Python的缺点

  1. 运行速度慢

下面正式进入Python的学习环境

由于是我的学习笔记,所以只记载了我觉得该记的、容易忘记的东西

Unicode字符串

因为计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理。最早的计算机在设计时采用8个比特(bit)作为一个字节(byte),所以,一个字节能表示的最大的整数就是255(二进制11111111=十进制255),0 - 255被用来表示大小写英文字母、数字和一些符号,这个编码表被称为ASCII编码

如果要表示中文,显然一个字节是不够的,至少需要两个字节,而且还不能和ASCII编码冲突,所以,中国制定了GB2312编码,用来把中文编进去。

类似的,日文和韩文等其他语言也有这个问题。为了统一所有文字的编码,Unicode应运而生。Unicode把所有语言都统一到一套编码里,这样就不会再有乱码问题了。

Unicode通常用两个字节表示一个字符,原有的英文编码从单字节变成双字节,只需要把高字节全部填为0就可以。

因为Python的诞生比Unicode标准发布的时间还要早,所以最早的Python只支持ASCII编码,普通的字符串'ABC'在Python内部都是ASCII编码的。

Python在后来添加了对Unicode的支持,以Unicode表示的字符串用u'...'表示,不加u中文就不能正常显示

如果中文字符串在Python环境下遇到 UnicodeDecodeError,这是因为.py文件保存的格式有问题。可以在第一行添加注释

# -*- coding: utf-8 -*-

目的就是告诉Python解释器,用UTF-8编码读取源代码。然后用Notepad++另存为...并选择UTF-8格式保存

布尔运算

True and 'a=T' 计算结果是 'a=T'
继续计算 'a=T' or 'a=F' 计算结果还是 'a=T'

要解释上述结果,又涉及到 and 和 or 运算的一条重要法则:短路计算。

1. 在计算 a and b 时,如果 a 是 False,则根据与运算法则,整个结果必定为 False,因此返回 a;如果 a 是 True,则整个计算结果必定取决与 b,因此返回 b。

2. 在计算 a or b 时,如果 a 是 True,则根据或运算法则,整个计算结果必定为 True,因此返回 a;如果 a 是 False,则整个计算结果必定取决于 b,因此返回 b。

所以Python解释器在做布尔运算时,只要能提前确定计算结果,它就不会往后算了,直接返回结果。

列表(List)

append(元素)把新的元素添加到list的尾部

insert(位置,元素)把新元素插入到指定位置

pop()删除列表最后一个元素,也可以指定具体删除的元素的位置

对list中的某一个索引赋值,就可以直接用新的元素替换掉原来的元素,list包含的元素个数保持不变。

元组(tuple)

tuple是另一种有序的列表,中文翻译为“ 元组 ”。tuple 和 list 非常类似,但是,tuple一旦创建完毕,就不能修改了。

创建tuple和创建list唯一不同之处是用( )替代了[ ]

因为()既可以表示tuple,又可以作为括号表示运算时的优先级,结果 (1) 被Python解释器计算出结果 1,导致我们得到的不是tuple,而是整数 1。

正是因为用()定义单元素的tuple有歧义,所以 Python 规定,单元素 tuple 要多加一个逗号“,”,这样就避免了歧义

字典(dict)

dict的第一个特点是查找速度快,无论dict有10个元素还是10万个元素,查找速度都一样。而list的查找速度随着元素增加而逐渐下降。

不过dict的查找速度快不是没有代价的,dict的缺点是占用内存大,还会浪费很多内容,list正好相反,占用内存小,但是查找速度慢。

dict的第二个特点就是存储的key-value序对是没有顺序的!

dict的第三个特点是作为 key 的元素必须不可变,Python的基本类型如字符串、整数、浮点数都是不可变的,都可以作为 key。但是list是可变的,就不能作为 key。

要添加新的key-value时,直接d['Paul'] = 72,就将Paul-72添加到字典d中了(示例)

集合(set)

add()添加新元素

remove()删除元素,若不存在会报错

python之定义默认参数

int()函数,可以进行数制转换。eg:int(‘123’,8) = 83

由于函数的参数按从左到右的顺序匹配,所以默认参数只能定义在必需参数的后面

python之定义可变参数

可变参数也不是很神秘,Python解释器会把传入的一组参数组装成一个tuple传递给可变参数,因此,在函数内部,直接把变量 args 看成一个 tuple 就好了。

定义可变参数的目的也是为了简化调用。假设我们要计算任意个数的平均值,就可以定义一个可变参数

切片

L[0:3]表示,从索引0开始取,直到索引3为止,但不包括索引3,如果第一个索引是0,还可以省略。

第三个参数表示每N个取一个,上面的 L[::2] 会每两个元素取出一个来,也就是隔一个取一个。

倒数第一个元素的索引是-1。倒序切片包含起始索引,不包含结束索引。

迭代

索引迭代也不是真的按索引访问,而是由 enumerate() 函数自动把每个元素变成 (index, element) 这样的tuple,再迭代,就同时获得了索引和元素本身。

values(),itervalues()迭代dict中的value

items()方法把dict对象转换成了包含tuple的list,iteritems()不把dict转换成list,而是在迭代过程中不断给出tuple,iteritems()不占用额外的内存

 

字符串可以通过 % 进行格式化,用指定的参数替代 %s。字符串的join()方法可以把一个 list 拼接成一个字符串。

isinstance(x, str) 可以判断变量 x 是否是字符串

 

到此,python的基础知识就学完了。确实可以感觉的到python要比其他语言编写起来方便的多。没有了那么多繁琐的条条框框。

接下来就进入更高一点点的python学习,不过也还是更高一点点的基础而已,python学习历程,还需要任重而道远啊

你可能感兴趣的:(Python学习)