全国报名热线

021-6769 0939

首页>Python>正文

Python学习:python基础教程

时间:2017-12-28 09:03:28   来源:cungian的CSDN   阅读:

Python提供了非常完善的基础代码库,覆盖了网络、文件、GUI、数据库、文本等大量内容,被形象地称作“内置电池(batteries included)”。Python的解释器很多,但使用最广泛的还是CPython。如果要和Java或.Net平台交互,最好的办法不是用Jython或IronPython,而是通过网络调用来交互,确保各程序之间的独立性。 

缺点: 
1)运行速度慢,因为Python是解释型语言,代码执行时会逐行翻译成CPU能理解的机器码; 
2) 代码不能加密。 
(如果要发布Python程序,实际上就是发布源代码,而C语言(编译语言)只需要把编译后的机器码(即在Windows上常见的xxx.exe文件)发布出去。要从机器码反推出C代码是不可能的。)


Python基础教程 
数据类型和变量—— 在Python中,能够直接处理的数据类型有以下几种: 
1)整数:没有大小限制 
2)浮点数:整数和浮点数在计算机内部存储的方式是不同的,整数运算永远是精确的(除法也是精确的【[1]】),而浮点数运算则可能会有四舍五入的误差。round(x,[,n]):给定浮点数x,并指定精度 
divmod(x,y):计算x,y整除和余数,并以元组类型返回 
3)字符串:转义字符\,用r”表示”内部字符串默认不转义,用”’…”’的格式表示多行内容 
4)布尔值 
5)空值:用None表示,不能理解为0,因为0是有意义的,而None是一个特殊的空值。 
6)列表:list【[2]】、tuple【[3]】 
7)字典:dict【[4]】 
8)集合:set【[5]】

变量命名规则参考来源 
1、大小写敏感,可以含有下划线_ 。 
2、命名惯例: 
a. 尽量不要以’ _ ’ 为首字母 
b. ‘X’ 为系统变量,有特殊含义 
c. ‘X’ 表示类的本地变量,在类中调用(注意:是两条下划线’’) 
d. ‘X’ Python Module的内置方法 
e. ’ _ ’ 存储着当前最后一个表达式的结果

【[1]】:在Python中,有两种除法,一种除法是/,计算结果是浮点数,即使是两个整数恰好整除,结果也是浮点数;还有一种除法是//,称为地板除,两个整数的除法仍然是整数,即使除不尽。 //除法只取结果的整数部分,%可以得到两个整数相除的余数。

字符串和编码——计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理。 
1)ASCII: 127个字符被编码到计算机里,也就是大小写英文字母、数字和一些符号 
2)GB2312:处理中文至少需要两个字节 
3)Unicode:把所有语言统一到一套编码里,通常是两个字节 
4)UTF-8:可变长编码,把一个Unicode字符根据不同的数字大小编码成1-6个字节

在计算机内存中,统一使用Unicode编码,当需要保存到硬盘或者需要传输的时候,就转换为UTF-8编码。 
单个字符:ord()函数获取字符的整数表示:ord(‘A’)>>65 
chr()函数把编码转换为对应的字符:chr(66)>>’B’ 
Python的字符串类型是str,在内存中以Unicode表示,一个字符对应若干个字节。传输或保存到磁盘上时需要把str变为以字节为单位的bytes(用带b前缀的单引号或双引号表示,字符/字节): 
‘ABC’.encode(‘ascii’)>>b’ABC’ 
‘中文’.encode(‘utf-8’)>>b’\xe4\xb8\xad\xe6\x96\x87’ 
b’ABC’.decode(‘ascii’)>>’ABC’ 
b’\xe4\xb8\xad\xe6\x96\x87’.decode(‘utf-8’)>>’中文’ 
len():str对应字符数,bytes对应字节数,list对应元素个数

格式化: 
1)%运算符用来格式化字符串,%s可以把任何数据类型转换为字符串; 2) 字符串的format()方法也可以格式化字符串,它会用传入的参数依次替换字符串内的占位符

【[2]】:列表[list]是Python内置的一种数据类型。list是一种有序的集合,可以随时添加和删除其中的元素。 
classmates = [‘Michael’,’Bob’,’Tracy’] ,最后一个元素的索引是len(classmates) - 1,还可以用-1做索引 
往list中追加元素到末尾:classmates.append(‘Adam’) 删除list末尾的元素:classmates.pop() 
把元素插入到指定的位置:classmates.insert(i,’Jack’) 删除指定位置的元素:classmates.pop(i) 
list中元素数据类型可以不同,替换元素可以直接赋值

【[3]】:元组(tuple)是另一种有序列表,但一旦初始化就不可修改 (tuple所谓的“不变”是说,tuple的每个元素,指向永远不变。即指向’a’,就不能改成指向’b’,指向一个list,就不能改成指向其他对象,但指向的这个list本身是可变的!) 
只有1个元素的tuple定义时必须加一个逗号,,来消除歧义(():又表示数学公式中的小括号):t=(1,)

条件判断(if:->>elif:->>else:): 
if x: 
print(‘True’) #只要x是非零数值、非空字符串、非空list等,就判断为True,否则为False。

循环: 
1)for x in …,依次把list或tuple中每个元素迭代出来 
2)while循环 
range()可以生成一个整数序列 
input()读取输入,返回数据类型为str,可以使用int()将数据转换为整数

【[4]】:Python内置了字典:dict的支持,dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度。dict的key必须是不可变对象。(dict根据key来计算value的存储位置,计算位置的算法称为哈希算法(Hash)) 
d = {‘Michael’: 95, ‘Bob’: 75, ‘Tracy’: 85} 
把数据放入dict的方法,除了初始化时指定外,还可以通过key放入:d[‘Adam’] = 67 
一个key只能对应一个value,判断key是否存在: 
1)’Thomas’ in d 
2)d.get(‘Thomas’):如果不存在,默认返回 None(Python交互环境不显示结果),也可自己指定返回值d.get(‘Thomas’,-1) 
删除key:pop(key) 
特点:1. 查找和插入的速度极快,不会随着key的增加而变慢; 
2. 需要占用大量的内存,内存浪费多。

【[5]】: set和dict类似,也是一组key的集合,但不存储value。由于key不重复,所以set中没有重复的元素。接收list作为输入集合。 
添加元素:add(key) 删除元素:remove(key)

可变对象和不可变对象:参考 
python在heap中分配的对象分成两类:可变对象和不可变对象。所谓可变对象是指,对象的内容是可变的,例如list。而不可变的对象则相反,表示其内容不可变。 
不可变(immutable):int、字符串(str)、float、(数值型number)、元组(tuple)、None(空) 
可变(mutable):字典型(dictionary)、列表型(list), set(集合) 
exp:a = [‘c’,’b’,’a’]->>a.sort()->>a = [‘a’,’b’,’c’] 
a = ‘abc’ ->>a.replace(‘a’,’A’)->>’Abc’,a = ‘abc’ (a是变量,‘abc’是字符串对象,replace创建了新变量)

高级特性 
1)切片: L[0:3]表示,从索引0开始取,直到索引3为止,但不包括索引3。(list、tuple、str)

2)迭代: 如果给定一个list或tuple,我们可以通过for循环来遍历这个list或tuple,这种遍历我们称为迭代(Iteration)。 
在Python中,迭代是通过for … in来完成的,而很多语言比如C语言,迭代list是通过下标完成的。

Python的for循环可以用在list或tuple上和任何可迭代对象上(字典、字符串等),通过collections模块的Iterable类型判断是否是可迭代对象。

dict迭代:默认情况下,dict迭代的是key(for key in d:),如果要迭代value,可以用for value in d.values(),如果要同时迭代key和value,可以用f**or k, v in d.items()**。 
如果要对list实现类似Java那样的下标循环,Python内置的enumerate()函数可以把一个list变成索引-元素对,这样就可以在for循环中同时迭代索引和元素本身。

列表生成式,即List Comprehensions,是Python内置的非常简单却强大的可以用来创建list的生成式。 
写列表生成式时,把要生成的元素如x * x放到前面,后面跟for循环,就可以把list创建出来<==>[x * x for x in range(1, 11)] 
使用两层循环,可以生成全排列:[m + n for m in ‘ABC’ for n in ‘XYZ’] 
列表生成式也可以使用两个变量来生成list:[k + ‘=’ + v for k, v in d.items()]

生成器: 一边循环一边计算的机制,称为生成器:generator。 
1)只要把一个列表生成式的[]改成(),就创建了一个generator 
可以通过next()函数获得generator的下一个返回值,可以使用for循环进行遍历,因为generator也是可迭代对象 
2)如果一个函数定义中包含yield关键字,那么这个函数就不再是一个普通函数,而是一个generator 
generator的函数,在每次调用next()的时候执行,遇到yield语句返回,再次执行时从上次返回的yield语句处继续执行。

迭代器: 
可以直接作用于for循环的数据类型有以下几种: 
一类是集合数据类型,如list、tuple、dict、set、str等; 
一类是generator,包括生成器和带yield的generator function。 
这些可以直接作用于for循环的对象统称为可迭代对象:Iterable。可以被next()函数调用并不断返回下一个值的对象称为迭代器:Iterator。 

生成器都是Iterator对象,但list、dict、str虽然是Iterable,却不是Iterator。 
可以使用iter()函数把list、dict、str等Iterable变成Iterator。

Python的Iterator对象表示的是一个数据流,Iterator对象可以被next()函数调用并不断返回下一个数据,直到没有数据时抛出StopIteration错误。可以把这个数据流看做是一个不知长度的有序序列,只能不断通过next()函数实现按需计算下一个数据,所以Iterator的计算是惰性的,只有在需要返回下一个数据时它才会计算。Iterator甚至可以表示一个无限大的数据流,例如全体自然数。而使用list是永远不可能存储全体自然数的。
(原文:http://blog.csdn.net/qq_17800715/article/details/78857180)

分享:0