Python全栈2 - 初级课程

2、Python初级课程

1、   Python 初识

 

2、Python 语法基础

2-1 python常量与变量

 

 

2-2 python数与字符串

python中数的类型主要有5中:int long float bool complex

 

python中有时单引号和双引号要交叉使用

 

python中三引号引起来的字符串可以换行

‘’’

 

‘’’

或者

“””

 

“””

 

转义符\

 

自然字符串print r” hello python\n”

 

字符串的重复print “ hello python\n”*20

 

子字符串

1)索引运算符从0开始索引

2)切片运算符[a:b]是指从第a下标开始到第b-1下标,第一位的下标为0

 

2-3 python数据类型  Python中无数组)

 

字符串

 

列表lst=[“a”,”b”] 读修改

 

元组tpl=(“a”,”b”) 只读

 

字典dic={‘’name”:”yx”, “age”:27}

 

集合定义:集合中的元素具有唯一性功能:1)建立关系 2)消除重复  格式:set(“abcafdefg”)

2-4认识python标识符

只能以字母或下划线开始

 

区分大小写

 

常用关键字 一共有28种 如:print  import

 

 

2-5 python对象

在python中,一切皆是对象

 

pickle #腌制

  为了将对象持久性存储

 

  序列化对象

 

  恢复对象

 

代码:

import pickle

 

#dumps(object)将对象序列化

lista=["mingyue","jishi","you"]

listb=pickle.dumps(lista)

#print listb

 

#loads(string)将对象原样恢复,并且对象类型也恢复为原来的格式

listc=pickle.loads(listb)

#print listc

 

#dump(object,file),将对象存储到文件里面序列化

group1=("bajiu","wen","qingtian")

f1=file('1.pk1','wb')

pickle.dump(group1,f1,True)

f1.close()

 

#load(object,file)将dump()存储在文件里面的数据恢复

f2=file('1.pk1','rb')

t=pickle.load(f2)

print t

f2.close()

 

 

 

2-6 Python行与缩进

逻辑行与物理行

行中分号使用

  逻辑行后因使用分号

  每个物理行末可以省略分号

 

行连接\

 

缩进

  逻辑行行首的空白是有规定的,逻辑行行首的空白不会导致程序执行出错

  方法:空格或tab键

 

注释  #

 

 

 

 

3、Python核心编程基础教程之Python运算符、运算符优先级、表达式简介

7/2 #3

7.0/2 #3.5

7/2.0 #3.5

7//2 #3

7%2 #1

 

~ : 按位翻转 公式~x=-(x+1)

 

<<:左移 乘2

 

>>:右移 除2

 

3-4 有先级 – 程序或运算符执行顺序

1)  函数调用、寻址、下标

2)  幂**

3)  翻转运算~

4)  正负号-2

5)  * / %

6)  + -

7)  << >>

8)  & | ^

9)  比较运算符

10)not and or

11)lambda表达式

 

3-5 Python运算符优先级的基本规律与特点

 

技巧()

 

3-6 Python表达式 – 值、变量和运算符的任意组合

单行命令中,会弹出结果

源程序中,不会有弹出结果

 

表达式执行结果与print结果的区别:

 >>> "qq"

'qq'

>>> print "qq"

qq

>>> a = 7

>>> a

7

>>> print a

7

4、Python 控制流

顺序

 

选择

 

循环

b = False

while b:

   print "A"

else:

   print "B"  # 只执行一次

 

contiue可以控制其下面的语言不执行,控制不了其上面的语句

 

continue与break的区别:

 continue – 不执行本次循环的剩余语句,继续下一轮循环

  break– 直接结束该循环的剩余所有次循环

 

 

 

 

 

 

5、Python函数 – 功能

5-1 认识函数

分类:系统自带的函数自定义的函数

 

len() – 取字符串长度

 

>>>b="student".split("u") # 字符串切割

>>> print b

['st', 'dent']

 

 

5-2 形参与实参

形参– 在函数的定义过程中,一般指参数的名称

 

实参– 函数调用时,一般指参数具体的值

 

参数传递– 默认按照位置传递,将实参传给形参

 

关键参数– 按照关键字传递

 

 

5-3 全局变量与局部变量

作用域

 

局部变量– 在一定的范围内起作用,如:函数里面的变量

 

全局变量– 在全部的程序内起作用

  global i

 

 

5-4 函数的使用(调用)与返回值

函数的返回值是通过return语句实现

 

返回一个值

 

返回多个值

def test(i,j):

   k=i*j

   return (i,j,k)  # 元组的形式返回多个值

x=test(3,4) # 以一个变量存储元组

print x

 

y,z,m=test(3,5)  # 以多个变量分别存储多个返回值

print y

5-5 文档字符串

#文档字符串

def d(i,j):

   '''A这个函数实现一个乘法运算           # 第一行概述

                                            # 第二行空格

    函数会返回一个乘法运算的结果'''        # 第三行以后不空

   k=i*j

   return k

 

#print d.__doc__

 

help(d)

 

 

 

 

 

6、Python 模块

6-1 认识Python模块

模块– 函数的扩展,实现一类功能如,C:\Python27\Lib中的文件

 

函数实现一项功能

 

如何导入模块

>>> import math

>>> math.pi

3.141592653589793

 

sys模块 – 标准库中,与系统功能有关的模块

>>> import sys

>>> sys.version  # 查看系统的版本信息

'2.7.11 (v2.7.11:6d1b6a68f775, Dec  5 2015, 20:32:19) [MSC v.1500 32 bit(Intel)]'

>>> sys.executable   # 当前运行程序的目录地址

'C:\\Python27\\pythonw.exe'

>>> sys.getwindowsversion()  # 返回Windows系统的版本信息

sys.getwindowsversion(major=6, minor=1,build=7601, platform=2, service_pack='Service Pack 1')

>>> sys.modules.keys()  # 返回已导入的模块

 

 

6-2 字节编译

Python中的两种执行方式:

1)         将模块里的内容编译成二进制语言,在执行

2)         直接执行对应模块的二进制语言程序

 

字节编译- 把模块编译成二进制语言的过程

 

Python中的字节编译是在解释器中完成的,因此Python仍然解释性语言

 

.pyc文件 – 经过编译后的模块二进制文件

 

.pyc文件的两种产生方式:

1)         运行.py的文件就会产生(直接import对应的模块),如,import zipfile之后出现

2)         在cmd中 python –m compileall xmllib.py

 

.pyc文件的作用:加快模块的运行速度 反编译

 

查看.pyc文件内容:binary viewer

 

 

6-3 from…import详解 – 导入模块中的功能

from(模块)import(某个方法)

from…import* - 导入所有属性和方法

 

 

6-4 认识__name__属性

主模块– 这个模块是被直接使用,自己执行,没有被别人调用,模块的__name__属性的值是__main__

 

非主模块– 这个模块被别人调用(被import时),模块的__name__属性的值不是__main__

 

__name__属性的使用 – 判断这个模块是不是主模块(判断模块的执行方式)

 

 

6-5 自定义模块

系统自带模块

 

自定义模块– 将Python程序保存在Lib目录下

 

自定义模块使用:

  在模块内,将参数初始化(或者声明参数的类型int i),保证模块没有逻辑和语法错误

  将参数的值从模块的外面传递到模块里面

 

 

6-6 dir()函数 – 查看一下指定模块的功能列表

>>> import sys

>>> dir(sys)

 

 

dir()函数扩展详解 – 查看任意指定对象的功能列表

>>> d=[]

>>> dir(d)

 

>>> e=90

>>> dir(e)

 

 

 

 

7、Python 数据结构初识

7-1 数据结构概述 – 数据的组织方式

内置数据结构– 列表[]、元组()、字典{}

 

扩展数据结构– 栈、队列

 

数据结构(静态)与算法(动态)的关系

 

栈– 一端开的容器

# coding=utf-8

 

# 的实现

class Stack():

   def __init__(st,size):

       st.stack=[]

       st.size=size

       st.top=-1

 

   def empty(st):

       if st.top==-1:

           return True

       else:

           return False

 

   def full(st):

       if st.top==st.size:

           return True

       else:

           return False

 

   def push(st,data):

       if st.full():

           print "Stack is full"

       else:

           st.stack.append(data)

           st.top=st.top+1

 

   def pop(st):

       if st.empty():

           print "Stack is empty"

       else:

           st.top=st.top-1

 

 

队列– 两端都开得容器,进行插入操作的一段叫队尾,进行删除操作的一段叫队首

 

数据的流量只能是单向的

 

# coding=utf-8

 

# 队列的实现

class Queue():

   def __init__(qu, size):

       qu.queue = []

       qu.size = size

       qu.front = -1

       qu.rear = -1

 

   def empty(qu):

       if qu.front == qu.rear:

           return True

       else:

           return False

 

   def full(qu):

       if qu.rear - qu.front + 1 == qu.size:

           return True

       else:

           return False

 

   def enQueue(qu, data):

       if qu.full():

           print "Queue is full"

       else:

           qu.queue.append(data)

           qu.rear += 1

 

   def outQueue(qu):

       if qu.empty():

           print("Queue is empty")

       else:

           qu.front -= 1

 

 

 

 

8、Python 数据结构进阶

 

 

 

 

 

9、Python 算法入门详解

 

 

 

 

 

 

10、Python 的面向对象程序设计

对象– 将每个复杂的事物拆分为不同的部分,其中每个部分称之为对象

 

面向对象的特点– 易维护;效率高;质量高;易扩展

 

类– 某些对象之间的共性的抽象

 

类与对象的关系– 类是对象的抽象,对象是类的具体表现形式,也叫做类的实例

代码:

#类和对象的实现

#类的实现,建立一个类的格式是:class 类名

class man:

   pass                         #pass属于空语句,无意义,目的是为了保证程序的完整性,叫做占位语句

#print man

 

#对象的实现,建立了类之后,再建立一个类的对象(也叫类的实例),建立对象的方式可以直接在类后面加小括号即可

class woman:

   pass

w=woman()

#print w

 

#以上我们实现了在一个类下创建了一个对象。这里,很多同学会问,之前我们不是说一个类型里面可以有多个例子吗?这里

#为什么只创建了一个对象?包括很多参考书上在这里没有点破,造成了很多初学者对这个问题的困扰。其实,在一个类下确

#实是可以建立多个实例的,我们且看下面的程序:

wangdama=woman()

lidama=woman()

zhangdama=woman()

#print wangdama

#print lidama

#print zhangdama

 

#这里,很对人可能又会疑问,我们都是将woman()赋给了前面一个实例,那是不是就是说前面这几个实例是一样的呢?

#不是的,我们虽然都是将woman()赋给了前一个变量(实例),但是具体意义是不一样的。这句话的意思只是说将

#woman这种类型赋给某个对象,只要对象名不一样,那么每个对象所占的存储内存也是不一样的,也就是说,这几个

#对象间可以互不影响。这一点,我们观察每个实例的内存就可知道。

 

 

方法– 一个是实例的功能动态 –方法代表对象的操作

 

属性– 静态 – 属性代表对象的数据

 

创建实例属性和实例所对应的类属性

 

__init__(self): 构造函数

 

__del__(self): 析构函数

 

代码:

#方法及属性的实现

class woman:

   pass

wangdama=woman()

 

#如何查看一个实例具有哪些属性?

#print wangdama.__dict__

 

#如何为一个实例添加属性?

wangdama.toufa="huangse"

#print wangdama.__dict__

 

#为其中一个实例添加了某属性之后,该类中的其他实例的属性是否会受影响?

lidama=woman()

#print lidama.__dict__

 

#如何查看一个实例所属类的属性?

#print wangdama.__class__.__dict__

 

#如何给某个实例所属类添加属性?

wangdama.__class__.xiezi="heise"

#print wangdama.__class__.__dict__

 

#在修改了其中一个实例的属性后,该实例所属类的其他实例类属性是否会受影响?

#print lidama.__class__.__dict__

 

#所以我们得出结论:在单独修改某个实例属性时,其他实例属性不受影响。若修改类属性,那么该类下所有实例类属性均受影响

 

#上面我们讲了属性如何创建,下面我们来说方法如何创建。

class god:

   def a(self):                    #这里的self是必须的,所有的方法,第一个参数必须是self,代表所有实例共享他,不具备其他任何含义

       print "所有人必须明天唱一首歌"

zongguan=god()

#zongguan.a()

 

#问:我们可以不通过实例调用方法而直接通过类去调用方法吗?答案:不可以

#god.a()

 

#我们可以看得到,其执行会出错。有人说,为什么下面这种形式可以?

#god().a()

#原因:有括号了,就已经是类的实例了,而不再是类。

 

#隐藏属性与隐藏方法

class school:

   def __jiaoxuefangfa(self):

       print "&^^*&*"

#school().__jiaoxuefangfa()

#我们可以看得到,出现错误,找不到该方法,明明已经定义却找不到,因为这个方法做了隐藏(__),隐藏后,在外面无法调用该方法

 

#如果我们去掉下划线,我们发现,在外面就可以调用了

 

#类常见的一些专有方法

#1.__init__,构造函数

class people:

   def hi(self):

       print 8899

   def __init__(self):

       a="A:how are you?"

       b="----B:Fine,thankyou"

       print a+b

#people()

 

#2.__del__,析构函数

class friend:

   def hi(self):

       print 8899

   def __init__(self):

       print "我是init最先调用"

   def __del__(self):

       a="我是析构函数"

       b="----对象生命周期结束啦,现在我得删除对象善后啦!"

       print a+b

#xiaohang=friend()

#xiaohang.hi()

#friend()

#friend().hi()

 

单继承– 只有一个父类继承 #class A(B)

 

多继承#class A(B,C)

 

多继承方法冲突解决– 优先选择左边

 

 

 

 

 

11、Python 异常处理与文件操作

代码1:

# Python异常的处理

# 使用tryexcept语句,假如try出现了某种异常,则执行except下面的语句

try:

   print i

except NameError:     #这里一定要指明异常类型

   i=9

   i+=10

   print "刚才i没定义,处理了异常之后,i的值为:"+str(i)

 

 

#处理多种异常

try:

   print i+j

except NameError:

   i=j=0

   print "刚刚i或j没有进行初始化数据,现在我们将其都初始化为0,结果是:"

   print i+j

except TypeError:

   print "刚刚i与j类型对应不上,我们转换一下类型即可处理异常,处理后:结果是:"+str(i)+str(j)

 

 

异常引发

  自动引发

  自定义引发 – 使用raise来引发

 

代码2:

# coding=utf-8

 

# 异常的引发

# 1/用raise引发一个系统的错误类

i=8

print i

if i>7:

   print 9

   raise NameError

   print 10

 

# 2/自定义一个异常并用raise引发

class RhhError(Exception):                 #按照命名规范,以Error结尾,并且自定义异常需要继承Exception类

   def __init__(self):

       Exception.__init__(self)

try:

   i=8

   if i>7:

       raise RhhError()

except RhhError,a:

   print "RhhError:错了就是错了"

 

 

# 3/自定义一个多参数的异常并用raise引发,比如我们可以定义一个异常,当x>2或者x+y>7的时候都会引发该异常

 

 

tryfinally语句

代码3:

# coding=utf-8

 

#try…finally的使用

#假如要实现不管中间是否发生异常,都要输出一串字符串

try:

    i= 7

   print i

finally:

   print "不管上面是否异常,我必须输出!"

 

#第二个例子:要实现将一串字符串输出10000000次,假如异常发生,需要判断前面已经输出了多少次。

try:

   for i in range(10000000):

       print "我要输出10000000次,现在正在输出中,也不知道现在是多少次了"

finally:

print "此时i的值是:"+str(i)+"--并未完成全部输出"

 

 

文件操作

代码:

#Python中文件的操作

 

#创建文件

fc=open("G:/文件操作演示文件夹/a.mp3","w")

 

#打开文件

fo=open("G:/文件操作演示文件夹/a.mp3","w")

 

#写入和关闭文件---写入文件四步曲:先做好内容,然后建立文件,然后再写入,然后再关闭

content='''我是文件的内容

是文件的

内容呢

待会据说要把我写进去。。

'''

fw=file("G:/文件操作演示文件夹/a.txt","w")

fw.write(content)

fw.close()

 

#然后学习了close是关闭之后,我们把a.mp3给关闭了

fc.close()

fo.close()

 

#读取文件,关键点:先打开文件,在进入while循环依次读取每行

fr=file("G:/文件操作演示文件夹/a.txt")

while True:

   line=fr.readline()

   if len(line)==0:

       break

   print line

fr.close

 

 

 

 

 

12、Python 标准库与其他应用

标准库–系统自带安装的库

位置:C:\Python27\Lib

sys模块 – 主要处理系统相关的功能

代码:

# coding=utf-8

import sys

 

# 接受命令行传来的参数

print sys.argv[0]

 

# 查看版本

print sys.version

 

# 退出

sys.exit(0)

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值