Python 学习报告

咱们小组的Python学习由王程鹏和刘峻琳负责,学习了Python语言从基础特性到高级特性的方方面面。总的来讲,咱们认识到Python是一种很是强大的语言,它具备大量的牛逼特性,包括支持函数式编程、支持面向对象,除此以外还有一些其它语言不具备的特性,例如切片等,其背后都有高级数据结构的支撑。接下来,咱们将总结从教程中学到的Python的一些用法。其中前半部分为王程鹏所写,后半部分由刘峻琳撰写。那么,让咱们赶快开始吧。编程

 

 

变量和数据类型数组

Python是一种动态语言,即变量类型能够随时修改,和Javascript相似,但与C和JAVA不一样。例如定义变量:数据结构

a = 123app

以后能够再给a赋任意类型的值:函数式编程

a = "This is a string!"函数

 

 

list和tuple学习

Python内置的一种数据类型是列表:list。list是一种有序的集合,能够随时添加和删除其中的元素。在实际使用的过程当中把它当作数组使用便可。值得注意的是list有append方法向list末尾添加元素。spa

classmates = ['Michael', 'Bob', 'Tracy']code

>>> classmates.append('Adam')对象

>>> classmates

['Michael', 'Bob', 'Tracy', 'Adam']

另外一种有序列表叫元组:tuple。tuple和list很是相似,可是tuple一旦初始化就不能修改,好比一样是列出同窗的名字。

classmates = ('Michael', 'Bob', 'Tracy')

 

 

条件判断与循环

好比作条件判断,注意if语句行末尾的冒号

if age >= 18:

    print 'your age is', age

    print 'adult'

或者加入else语句

if age >= 18:

    print 'your age is', age

    print 'adult'

else:

    print 'your age is', age

    print 'teenager'

循环这里涉及到可迭代对象,对全部可迭代对象都可以调用for循环语句便利其中的全部元素。好比dict为可迭代对象,下面的代码就是对一个dict作迭代(遍历)

>>> d = {'a': 1, 'b': 2, 'c': 3}

>>> for key in d:

...     print key

 

a

c

b

 

 

dict和set

Python内置了字典:dict的支持,dict全称dictionary,在其余语言中也称为map,使用键-值(key-value)存储,具备极快的查找速度。好比查找同窗成绩,代码以下:

>>> d = {'Michael': 95, 'Bob': 75, 'Tracy': 85}

>>> d['Michael']

95

set和dict相似,也是一组key的集合,但不存储value。因为key不能重复,因此,在set中,没有重复的key。要建立一个set,须要提供一个list做为输入集合,重复元素会被自动过滤:

>>> s = set([1, 1, 2, 2, 3, 3])
>>> s
set([1, 2, 3])

可用&和|作集合的交和并运算。

>>> s1 = set([1, 2, 3])
>>> s2 = set([2, 3, 4])
>>> s1 & s2
set([2, 3])
>>> s1 | s2
set([1, 2, 3, 4])

 

 

切片

取list或者tuple的某一段元素时会用到切片操做,经常使用用法以下所示:

>>> L = ['Michael', 'Sarah', 'Tracy', 'Bob', 'Jack']

第0个开始到第3个以前

>>> L[0:3]

['Michael', 'Sarah', 'Tracy']

>>> L = range(100)

全部数,每5个取一次

>>> L[::5]

[0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95]

甚至什么都不写,只写[:]就能够原样复制一个list。

 

 

列表生成式

列表生成式即List Comprehensions,是Python内置的很是简单却强大的能够用来建立list的生成式。

若是要生成1到100全部彻底平方数的列表。

>>> [x * x for x in range(1, 11)]

[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

一行代码便可解决问题

 

 

生成器

和列表生成式不一样的是,把最外面的[]改成()即为生成器,它也是可迭代的。

>>> g = (x * x for x in range(10))

>>> for n in g:

...     print n

最终输出的即为1到100共10个彻底平方数。

 

 

函数

Python的函数中不少不一样于常见语言的特性,但咱们仍是从基础提及。在Python中定义函数须要用到关键字def,例如:

def add(a, b):

  return a + b

 

能够用pass关键字定义一个空函数:

def nop();

  pass

 

Python中的函数能够返回多个值,其本就是返回一个tuple。好比:游戏中常常须要从一个点移动到另外一个点,给出坐标、位移和角度,就能够计算出新的新的坐标:

import math

def move(x, y, step, angle=0):

    nx = x + step * math.cos(angle)

    ny = y - step * math.sin(angle)

    return nx, ny

 

调用系统函数时,Python会自动进行参数匹配检查,而调用自定义函数时,没有自动参数检查,所以最好在函数体内进行人工的参数检查。

 

Python的强大之处在于它支持多种格式的函数参数,包括默认参数、可变参数、自定义参数。其中默认参数和C相似,咱们只说明可变参数和关键字参数。

 

可变参数,即利用list和tuple实现以不一样的参数个数调用同一个函数,可变参数的前面要加上*号:

def calc(*numbers):

  sum = 0

  for n in numbers:

    sum = sum + n

  return sum

有以下调用结果:

>>>calc(1,2,3)

6

>>>calc(1,2,3,4)

10

 

关键字参数也容许传入数量不定的参数,但会将这些参数组装成一个tuple。

函数的参数能够由普通、默认、可变、关键字参数四种参数组成,但必须听从这个顺序。

 

 

面向对象

如前文所述,Python具备和C++同样的面向对象的特性,这让咱们能够利用类来实现对数据和方法的封装:

class Student(object):

  pass

定义了一个空类。若是定义的类没有特定的父类,就指定从object继承。

 

bart = Student()

定义了一个对象的实例。能够自由地给对象赋予属性:

bart.name = 'Liu Junlin'

也能够在定义类时规定必要属性:

class Student(object):

  def __init__(self, name, score):

    self.name = name

    self.score = score

类的成员函数第一个参数永远都是self,但调用时不须要传递。

 

定义必需属性时加上两个下划线,则表明是私有成员,从外部没法访问:

class Student(object):

  def __init__(self, name):

    self.__name = name

 

Python类的继承性和多态性与C++相似,在此不赘述。

 

错误处理

和众多高级语言同样,Python也有相似try-catch这样的错误处理机制,例如:

try:

    print 'try...'

    r = 10 / int('a')

    print 'result:', r

except ValueError, e:

    print 'ValueError:', e

except ZeroDivisionError, e:

    print 'ZeroDivisionError:', e

else:

    print 'no error!'

finally:

    print 'finally...'

print 'END'

其中try为可能会抛出错误的代码段,和其它语言相似。except为捕捉错误的代码段,和catch相似。抛出的错误可能有多种类型,因此可能须要多个except语句。else为可选项,处理没有错误的状况。finally也是可选代码段,当执行完一个except或else代码段以后执行。

相关文章
相关标签/搜索