参考:http://www.cnblogs.com/vamei/archive/2012/09/13/2682778.html
- Python程序hello.py改成一个可执行的脚本,直接执行
#!/usr/bin/env python
print('Hello World!')
$ chmod 755 hello.py
$ ./hello.py
print 输出语句,python2不用加括号,python3需要加括号,在语句结尾加逗号,则不换行
Python的变量不需要声明,数据类型是Python自动决定的。
内置函数type(), 用以查询变量的类型。
print(type(a))sequence(序列)是一组有顺序的元素的集合,序列可以包含一个或多个元素,也可以没有任何元素。
序列有两种:tuple(元组) 和 list (表)
tuple和list的主要区别在于,一旦建立,tuple的各个元素不可再变更,而list的各个元素可以再变更。序列元素的下标从0开始;由于list的元素可变更,你可以对list的某个元素赋值;但tuple不可以赋值
范围引用: 基本样式[下限:上限:步长] :注意:上限本身不包括在内
>>>print(s1[:5]) # 从开始到下标4 (下标5的元素 不包括在内)
>>>print(s1[2:]) # 从下标2到最后
>>>print(s1[0:5:2]) # 从下标0到下标4 (下标5不包括在内),每隔2取一个
>>>print(s1[-3]) # 序列倒数第三个元素
- 字符串是一种特殊的元组,因此可以执行元组的相关操作
>>>str = 'abcdef'
>>>print(str[2:4])
- 数学运算符 +, -, , /, *, %
判断 ==, !=, >, >=, <, <=, in
逻辑 and, or, not
- if语句之后的冒号,下一行以四个空格的缩进来表示隶属关系, Python中不能随意缩进
if <条件1>:
statement
elif <条件2>:
statement
else:
statement
- for循环基本构造:
>>> for 元素 in 序列:
statement
这个循环就是每次从表序列中取出一个元素,然后将这个元素赋值给元素,之后执行隶属于for的操作
- 函数range():这个函数的功能是新建一个表。这个表的元素都是整数,从0开始,下一个元素比前一个大1, 直到函数中所写的上限
>>> idx = range(5)
>>> print idx
output: [0,1,2,3,4]
- while循环 :while会不停地循环执行隶属于它的语句,直到条件为假(False)
>>> while 条件:
statement
- 中断循环:
continue # 在循环的某一次执行中,如果遇到continue, 那么跳过这一次执行,进行下一次的操作
break # 停止执行整个循环
- 函数的定义,基本结构
def square_sum(a,b):
c = a**2 + b**2
return c
注意:
(1)def关键字,square_num函数名;
(2)(a,b)函数的参数,是对函数的输入;参数可以有多个,也可以完全没有(但括号要保留)
(3)return可以返回多个值,以逗号分隔。相当于返回一个tuple(定值表)。
(4)return a,b,c # 相当于 return (a,b,c)
(5)return并不是必须的,当没有return, 或者return后面没有返回值时,函数将自动返回None
(6)对于基本数据类型的变量,变量传递给函数后,函数会在内存中复制一个新的变量,从而不影响原来的变量。(我们称此为值传递)
(7)对于表,表传递给函数的是一个指针,指针指向序列在内存中的位置,在函数中对表的操作将在原有内存中进行,从而影响原有变量。(我们称此为指针传递)
- 定义一个类:
class Bird(object): #定义一个类
have_feather = True #类的属性
way_of_reproduction = 'egg'
def move(self, dx, dy): #类的方法
position = [0,0]
position[0] = position[0] + dx
position[1] = position[1] + dy
return position
class Chicken(Bird): #子类,继承父类的所有属性和方法
way_of_move = 'walk'
possible_in_KFC = True
summer = Chicken() #创建一个对象
print summer.have_feather #调用对象的方法
print summer.move(5,8) #调用对象的函数
注意:
(1)将东西根据属性归类 ( 将object归为class )
(2)方法是一种属性,表示动作
(3)用继承来说明父类-子类关系。子类自动具有父类的所有属性。
(3)方法的第一个参数必须是self,无论是否用到
(4)self代表了根据类定义而创建的对象
(5)建立对一个对象: 对象名 = 类名()
面向对象
(1)对象通过self.attrName来调用类属性和方法
(2)init()方法:对象创建是自动调用的初始化方法dir():用来查询一个类或者对象所有属性。
help()用来查询的说明文档
len()用来返回list所包含的元素的总数
- list是一个类
>>>nl = [1,2,5,3,5]
nl是类list的一个对象。
>>>print nl.count(5) # 计数,看总共有多少个5
>>>print nl.index(3) # 查询 nl 的第一个3的下标
>>>nl.append(6) # 在 nl 的最后增添一个新元素6
>>>nl.sort() # 对nl的元素排序
>>>print nl.pop() # 从nl中去除最后一个元素,并将该元素返回。
>>>nl.remove(2) # 从nl中去除第一个2
>>>nl.insert(0,9) # 在下标为0的位置插入9
运算符,比如+, -, >, <, 以及下标引用[start:end]等等,从根本上都是定义在类内部的方法。
- list类没有对 - 定义,我们可以继承list类,添加对’-‘的定义
class superList(list):
def __sub__(self, b):
a = self[:] # 这里,self是supeList的对象。由于superList继承于list,它可以利用和list[:]相同的引用方法来表示整个对象。
b = b[:]
while len(b) > 0:
element_b = b.pop()
if element_b in a:
a.remove(element_b)
return a
print superList([1,2,3]) - superList([3,4])