您现在所在的位置:首页 > 常见问题 > 课程问题 >

只要你会中文 就能学会的Python面向对象的完整教程

来源:奇酷学院 发表于:

Python面向对象完整教程


  奇酷学员讲师们专为小白编写的Python面向对象的完整教程,在给大家分享之前呢!奇小酷推荐一个奇酷的交流圣地,里面都是一群热爱并在学习Python的奇酷学员们,群资料也上传了好多Python的课程视频教程,里面的老师们积极解决小白的问题,这个Python群:514317840 欢迎大家进来一起交流讨论,一起进步,让奇酷成为你学习Python路上的挚友。



 

  简介

  面向对象、解释型的编程语言。python3.x各方面更成熟,将来肯定是主流,python2.x处理速度更快点。python3.x简洁、易学、几乎全能、支持面向对象,越来越多公司用python3.x。

  建议学python3.x

  能做什么

  数据分析与挖掘、黑客逆向编成、机器学习、网络爬虫、开发游戏、自动化运维、开发WEB项目。

  python 安装

  python3.5.2 64位 稳定

  官网 www.python.org(搜狗浏览器访问,download windows )

  管理员身份运行

  customise

  勾选2、3 1随便 最后两个不勾

  设置安装盘

  advanced options (选creat、add)

  设置环境变量---> 告诉系统python安装在什么地方了

  (比较慢、)

  python语法基础

  输出

  输出hellow world

  输入IDLE---> python

  print(“要输出的内容”)

  shell一行一行执行。ctrl+N 多行执行

  后缀名.py

  注释

  #注释法

  三引号注释法---英文输入法下两端输入三个单引号或者多引号(前后要对应)

  标识符

  命名规则:第一个字符为字母或下划线;除了第一个字的其他字符可以是字母、下划线或数字。如_jh3ih/j_3hhf

  变量

  和标识符命名规则相同。

  赋值=从右往左看

  数据类型

  默认数据类型:数、

  字符串(a='abc'/a2="abc"/a3='''abc''')、

  列表(list)---存储多个元素[,隔开,从0开始编号]列表内元素可以赋值

  、元祖(tuple)---()元祖内不可以重新赋值,取值和列表方式一样、

  集合(set)---=set{"字符串"}输出{'','',....}---去重、集合运算

  字典(dictionary)---{键:值,键:值.....}---d={"abc":6,"q":"daa"}。取值规则:字典名["对应键名"]--d["q"]输出daa

  运算符 +、-、*、/、%。基本的数学运算符的优先级规律在python上基本使用。实在不清楚优先级规律,为需要先执行的运算加上括号。+号可以进行字符串的连接---j="da",k="abc"+j--> k="abcda"

  缩进

  同一层次的代码,处于同一个缩进幅度上,下一层次的代码,需要相对于上一层缩进,使用tab缩进。

  python控制流

  三种控制流概述

  顺序结构

  条件分支结构 if():/ elif():---else if:()/else:

  循环结构

  while --while():-->

  for

  便利列表--a=["qF","D","fd","d"] for i in a:-->

  进行常规循环--for i in range(0,10)-->

  中断结构

  break

  全部直接退出,整个循环中断

  continue

  中断一次循环,继续下一次循环

  乘法口诀

  for i in range(1,10) : 

  for j in range(1,i+1):

  print(str(i)+"*"+str(j)+"="+str(i*j),end=" ")

  print()

  end代表不换行输出、注意python中缩进的含义,相同缩进代表相同层级

  作业:逆向输出乘法口诀(9-->1)

  #逆向输出乘法口诀

  for i in range(1,10):

  for j in range(1,11-i):

  print(str(10-i)+"*"+str(11-j-i)+"="+str((10-i)*(11-j-i)),end=" ")

  print()

  for i in range(9,0,-1):

  for j in range(i,0,-1):

  print(str(i)+"*"+str(j)+"="+str(i*j),end=" ")

  print()

  函数

  函数的本质是功能的封装--def 函数名(参数)

  局部变量与全局变量

  作用域从变量开始到程序的最末的变量叫做全局变量,作用域只在局部的变量叫做局部分量。

  函数内部定义的变量是局部变量,不能再外部输出或调用。

  函数参数的使用

  函数定义的格式--def 函数名(参数)

  def abc(): print("agg")

  调用----输入 函数名()

  参数:与外界沟通的接口

  形参

  函数定义的时候使用形参

  实参

  函数调用的时候用实参

  python模块实战

  什么是python模块

  为了让python程序实现更方便,可以根据需求类别将一些厂检单功能(函数)组合在一起,形成模块。以后要实现这一类功能的时候,直接导入该模块即可,模块里面的函数叫做模块的方法。系统自带的模块在安装目录的lib目录中。

  模块内的函数叫做模块的方法。

  模块的导入

  import模块名

  import cgi

  cgi.closelog()

  from...import...

  from cgi import closelog

  第三方模块的安装

  模块的类别

  自带模块

  第三方模块(较常用)

  pip方式

  cmd---pip---网络安装

  whl下载安装

  下载lfd python---sp35 amd64--下载另存d盘爬虫--cmd--d:-cd 文件夹---pip install+下载文件全名(包括后缀)

  直接复制

  复制别人的安装文件(电脑和python型号相同)html文件

  anaconda

  自定义模块

  在lib目录下新建文件--

  python文件操作

  文件操作概述

  直接使用对文件进行打开、关闭、读取、写入等操作,使用python可以自动对程序进行处理,比如合并多个Excel表格文件的内容。

  文件操作实战

  文件打开

  操作txt文件---新建txt文档---写入内容--如何用python读取其中的内容--打开--open(文件地址,操作形式)--fh=open("D:/sdags/sgas","r")或fh=open("D:sdagssgas","r")---data=fh.read()--data--全部内容--fh.readline()---一行一行地读

  操作形式:w-写、r-读取、b-二进制、a追加

  文件关闭

  fh.close()打开了用完之后一定要关闭文件

  文件写入(w/a+)

  data="dhaghhh"--open("文件地址","w")--fh2.write(data)--必须要先关闭写入文件内容才会在文件中保存--fh2.close()--多次写入只需一次文件关闭(如果用的是w-非追加写入的话)

  w写入模式下每次关闭都会对内容进行更新替换,如果想每次写完不替换原先的内容,可以用a+追加写入模式。

  python异常处理

  概述

  python程序在执行的时候,经常会遇到异常,如果中间异常不处理,经常会导致程序崩溃。比如后面我们写爬虫的时候,如果不进行异常处理,很可能虫爬了一半,直接崩溃了。

  目的是写程序的过程中遇到异常可以跳过,不至于程序崩溃,增强程序的生命力。

  异常处理实战

  在python中创建一个try文件---ctrl+n(new)--ctrl-a--写一个程---制造异常---

  异常处理格式

  try:

  程序

  except Exception as 异常名称:

  异常处理部分

  注意: try和except要对应,且缩进量保持一致;try和循环的嵌套关系变化可能带来不同的处理结果。

  python面向对象编程

  概述

  面向对象编程即OOP编程,区别于面向过程编程,面向对象编程比较适合开发大项目,会以更接近人类的思维角度去写程序。

  类和对象

  类:具有某种特征的事物的集合(群体)

  对象:群体(类)里面的个体

  类是抽象的,对象是具体的---类的实例化

  创造一个类:

  class 类名:

  类里面的内容

  ...

  class cl1:

  pass

  ...

  实例化一个类

  a=cl1()

  ...

  a即类(cl1)内对象

  构造函数

  类在实例化时自动首先触发的函数:init(self,参数)--双下划綫,在类中的方法中必须加上self参数。

  class cl2

  def__init__(self):

  print("hellow,welcome")

  构造函数作用是初始化

  给类加上参数---给构造方法加上参数

  class cl3

  def __init__(self,name,job):

  print("my name is "+name+"my job is"+job)

  输入c=cl3("ag","aqw")--输出my name is ag my job is aqw

  属性与方法

  属性: 静态的特征。如头发、手臂等

  方法: 动态的特征。如唱歌、写字等

  类中属性的定义和调用:self.属性名

  class cl4:

  def __init__(self,name,job):

  self.myname=name

  self.myjob=job----定义类的属性

  输入c=cl4("ag","aqw")--输入myname--输出ag--输入myjob--输出aqw--直接调用类的属性

  方法:类里面的函数def 方法名(self,参数)

  class cl5:

  def myfound(self):

  print("aga")

  实例化时不需要添加参数,调用的时候需要添加

  class cl6:

  def myfound1(self,name):

  print("hellow"+" "+name)

  调用类里面的方法:

  c=cl6()------实例化

  c.myfound("liuyong")---调用函数myfound()并加参数

  输出hellow liuyong

  class cl7:

  def __init__(self,name):

  self.myname=name

  def myfound1(self):

  print("hellow"+" "+myname)

  调用类里面的方法:

  c=cl7("liuyong")------实例化即添加参数

  c.myfound()---调用函数myfound()并加参数

  继承与重载

  继承: 把某一个或多个类(基类)的特征拿过来(单继承、多继承)

  重载: 把子类(派生类)里面对继承过来的特征重新定义

  父类: 基类

  子类: 派生类

  案例讲解

  某一个家庭有父亲、母亲、儿子、女儿,父亲可以说话,母亲可以写字,大儿子继承了父亲写字的能力,女儿同时继承了父母亲、并且有能力听东西,小儿子继承了父亲,但是优化(减弱)了父亲说话的能力。

  父亲类(基类):

  class father():

  def speak(self):

  print("I can speak")

  单继承类:class 子类(父类)

  class son1(father):

  pass

  执行

  s=son1()

  s.speak()

  ---I can speak

  母亲类:

  class mother()

  def write(self):

  print("I can write")

  多继承:

  class daughter(father,mother):

  def listen(self):

  print("I can listen")

  执行

  d=daughter()

  d.speak()

  ---I can speak

  d.write()

  ---I can write

  d.listen()

  ---I can listen----多继承不影响新功能

  重写(重载):

  class son2(father):

  def speak(self):

  print("I can speak 2")

  执行

  s=son2()

  s.speak()

  ---I can speak2---重名覆盖

  作业:

  将多个Excel表格里面的内容合并到一个文件中。

  要点:

  使用第三方模块操作,比如xlrd、xlwt;

  注意使用循环;

  一个Excel中有多个sheet,也需要合并。

  奇小酷非常希望大家能加入到奇酷的大家庭来,我们一起学习、一起进步,当然了,也祝大家学习Python的路上一路顺风!