搜档网
当前位置:搜档网 › python基础教程pdf

python基础教程pdf

python基础教程pdf
python基础教程pdf

Python学习路线图

一、Python学习的四个阶段

?第一阶段

该阶段首先通过介绍不同领域的三种操作系统,操作系统的发展简史以及Linux系统的文件目录结构让大家对Linux系统有一个简单的认识,同时知道为什么要学习Linux命令。然后我们会正式学习Linux命令

1. 文件和目录命令:ls,cd,touch,mkdir,rm

2. 拷贝和移动命令:tree,cp,mv

3. 文件内容命令:cat,more,grep

4. 远程管理命令:ifconfig,ping,SSH的工作方式简介以及ssh命令

5. 用户权限及用户管理命令:chmod,chgrp,useradd,passwd,userdel

6. 软件安装及压缩命令:apt简介及命令,tar,gzip压缩命令,bzip2压缩命令

7. vim的基本使用

?第二阶段

该阶段我们正式进入Python这门语言的学习,首先通过了解Python语言的起源,Python语言的设计目标,Python语言的设计哲学,Python语言的优缺点和面向对象的基本概念,以及Python语言的执行方式,还有Python集成开发环境PyCharm的使用为我们接下来的学习做铺垫。

然后我们会学习int,string,float三种简单的变量类型,变量间的计算,变量的输入输出,if判断语句,while循环语句,for循环语句,break和continue 的使用,函数的基本使用,模块的使用,列表,元组,字典三种高级变量,字符串的常用操作。

接下来我们会通过一个名片管理系统的案例,把这一阶段的知识进行一个串联。在学习名片管理系统时,首先我们会学习怎么去搭建这一系统的框架,然后我们会分别实现新增名片,显示全部名片,查询名片,删除名片,修改名片这些功能。

最后我们会学习语法的进阶内容,全局变量,局部变量,可变数据类型和不可变数据类型以及函数返回多个值,函数的缺省参数,多值参数,递归的基本使用。

?第三阶段

该阶段我们会学习面向对象(OOP)这一重要的编程思想,首先学习的知识点有类和对象的基本概念,dir函数,self的作用,初始化方法__init__,内置函数__str__,__del__,单继承,方法重写,私有属性和方法,多继承,多态,类属性,静态方法。

然后我们还会学习单例模式这一设计模式,异常的捕获,异常的抛出,from import局部导入,from import导入同名工具, from import导入所有工具,包的使用,制作模块,pip的使用以及文件的相关操作。

?第四阶段

该阶段是项目演练阶段,我们会带领大家通过使用之前学习过的知识开发飞机大战这一经典游戏,项目中分别有游戏窗口,图像绘制,游戏循环,事件监听,精灵和精灵组以及创建敌机,创建英雄和发射子弹,碰撞检测等模块。

二、Python的可发展方向

目前Python应用最多的是:Python开发、Web开发、后端开发、爬虫开发、大数据分析、人工智能等6大方向。这6大方向也是Python语言目前在市场上提供工作岗位最多也是最有发展的方向,大家可以根据自身的情况,来选择适合自己的方向着重去学习,从而得到更好的发展。

三、python学习路线图

?python语言基础

(1)Python3入门,数据类型,字符串

(2)判断/循环语句,函数,命名空间,作用域

(3)类与对象,继承,多态

(4)tkinter界面编程

(5)文件与异常,数据处理简介

(6)Pygame实战飞机大战,2048

?python语言高级

(1)Python常见第三方库与网络编程

(2)Python正则表达式

(3)邮箱爬虫,文件遍历,金融数据爬虫,多线程爬虫(4)Python线程、进程

(5)Python MySQL数据库,协程,jython

?python全栈工程师前端

(1) HTML

(2) HTML5

(3) CSS

(4) CSS3

(5) 网页界面设计实战

(6) javaScript

(7) jquerry

(8) jquerry EasyUI, Mobile简介,photoshop

(9) Bootstrap

?python全栈工程师后端

(1) Django入门

(2) Django高级

(3) Django实战

?python全栈工程师后端高级

(1) Flask开发原理

(2) Flask开发项目实践

(3) Tornado开发原理

(4) Tornado开发项目实践

?Linux基础

(1) 文件处理命令

(2) 权限管理命令

(3) 帮助命令

(4) 文件搜索命令

(5) 压缩解压命令

(6) 命令使用技巧

(7) VIM使用

(8) 软件包管理

(9) 用户和用户组管理

(10) Linux Shell开发

?Linux运维自动化开发

(1) Python开发Linux运维

(2) Linux运维报警工具开发

(3) Linux运维报警安全审计开发

(4) Linux业务质量报表工具开发

(5) Kali安全检测工具检测

(6) Kali 密码破解实战

?python数据分析

(1) numpy数据处理

(2) pandas数据分析

(3) matplotlib数据可视化

(4) scipy数据统计分析

(5) python 金融数据分析

?python大数据

(1) Hadoop HDFS

(2) python Hadoop MapReduce

(3) python Spark core

(4) python Spark SQL

(5) python Spark MLlib

?python机器学习

(1) 机器学习基础知识简介

(2) KNN算法

(3) 线性回归

(4) 逻辑斯蒂回归算法

(5) 决策树算法

(6) 朴素贝叶斯算法

(7) 支持向量机

(8) 聚类k-means算法

四、Python学习案例

假设我们有这么一项任务:简单测试局域网中的电脑是否连通.这些电脑的ip范围从192.168.0.101到192.168.0.200.

思路:用shell编程.(Linux通常是bash而Windows是批处理脚本).例如,在Windows上用ping ip 的命令依次测试各个机器并得到控制台输出.由于ping通的时候控制台文本通常是"Reply from ... " 而不通的时候文本是"time out ... " ,所以,在结果中进行字符串查找,即可知道该机器是否连通.

实现:Java代码如下:

String cmd="cmd.exe ping ";

String ipprefix="192.168.10.";

int begin=101;

int end=200;

Process p=null;

for(int i=begin;i

p= Runtime.getRuntime().exec(cmd+i);

String line = null;

BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInpu tStream()));

while((line = reader.readLine()) != null)

{

//Handling line , may logs it.

}

reader.close();

p.destroy();

}

这段代码运行得很好,问题是为了运行这段代码,你还需要做一些额外的工作.这些额外的工作包括:

●编写一个类文件

●编写一个main方法

●将之编译成字节代码

●由于字节代码不能直接运行,你需要再写个小小的bat或者bash脚本来运行.

当然,用C/C++同样能完成这项工作.但C/C++不是跨平台语言.在这个足够简单的例子中也许看不出C/C++和Java实现的区别,但在一些更为复杂的场景,比如要将连通与否的信息记录到网络数据库.由于Linux和Windows的网络接口实现方式不同,你不得不写两个函数的版本.用Java就没有这样的顾虑.

同样的工作用Python实现如下:

import subprocess

cmd="cmd.exe"

begin=101

end=200

while begin

p=subprocess.Popen(cmd,shell=True,stdout=subprocess.PIPE,

stdin=subprocess.PIPE,

stderr=subprocess.PIPE)

p.stdin.write("ping 192.168.1."+str(begin)+"\n")

p.stdin.close()

p.wait()

print "execution result: %s"%p.stdout.read()

对比Java,Python的实现更为简洁,你编写的时间更快.你不需要写main函数,并且这个程序保存之后可以直接运行.另外,和Java一样,Python也是跨平台的.

有经验的C/Java程序员可能会争论说用C/Java写会比Python写得快.这个观点见仁见智.我的想法是当你同时掌握Java和Python之后,你会发现用Python写这类程序的速度会比Java快上许多.例如操作本地文件时你仅需要一行代码而不需要Java 的许多流包装类.各种语言有其天然的适合的应用范围.用Python处理一些简短程序类似与操作系统的交互编程工作最省时省力.

Python应用场合

足够简单的任务,例如一些shell编程.如果你喜欢用Python设计大型商业网站或者设计复杂的游戏,悉听尊便.

2 快速入门

2.1 Hello world

安装完Python之后(我本机的版本是2.5.4),打开IDLE(Python GUI) , 该程序是Python语言解释器,你写的语句能够立即运行.我们写下一句著名的程序语句:

print "Hello,world!"

并按回车.你就能看到这句被K&R引入到程序世界的名言.

在解释器中选择"File"--"New Window" 或快捷键Ctrl+N , 打开一个新的编辑器.写下如下语句:

print "Hello,world!"

raw_input("Press enter key to close this window");

保存为a.py文件.按F5,你就可以看到程序的运行结果了.这是Python的第二种运行方式.

找到你保存的a.py文件,双击.也可以看到程序结果.Python的程序能够直接运行,对比Java,这是一个优势.

2.2 国际化支持

我们换一种方式来问候世界.新建一个编辑器并写如下代码:

print "欢迎来到奥运中国!"

raw_input("Press enter key to close this window");

在你保存代码的时候,Python会提示你是否改变文件的字符集,结果如下:

# -*- coding: cp936 -*-

print "欢迎来到奥运中国!"

raw_input("Press enter key to close this window");

将该字符集改为我们更熟悉的形式:

# -*- coding: GBK -*-

print "欢迎来到奥运中国!" # 使用中文的例子

raw_input("Press enter key to close this window");

程序一样运行良好.

2.3 方便易用的计算器

用微软附带的计算器来计数实在太麻烦了.打开Python解释器,直接进行计算:

a=100.0

b=201.1

c=2343

print (a+b+c)/c

2.4 字符串,ASCII和UNICODE

可以如下打印出预定义输出格式的字符串:

print """

Usage: thingy [OPTIONS]

-h Display this usage message

-H hostname Hostname to connect to """

字符串是怎么访问的?请看这个例子:

word="abcdefg"

a=word[2]

print "a is: "+a

b=word[1:3]

print "b is: "+b # index 1 and 2 elements of word.

c=word[:2]

print "c is: "+c # index 0 and 1 elements of word.

d=word[0:]

print "d is: "+d # All elements of word.

e=word[:2]+word[2:]

print "e is: "+e # All elements of word.

f=word[-1]

print "f is: "+f # The last elements of word.

g=word[-4:-2]

print "g is: "+g # index 3 and 4 elements of word.

h=word[-2:]

print "h is: "+h # The last two elements.

print "i is: "+i # Everything except the last two characters

l=len(word)

print "Length of word is: "+ str(l)

请注意ASCII和UNICODE字符串的区别:

print "Input your Chinese name:"

s=raw_input("Press enter to be continued");

print "Your name is : " +s;

l=len(s)

print "Length of your Chinese name in asc codes is:"+str(l);

a=unicode(s,"GBK")

l=len(a)

print "I'm sorry we should use unicode char!Characters number of your Chinese \ name in unicode is:"+str(l);

2.5 使用List

类似Java里的List,这是一种方便易用的数据类型:

word=['a','b','c','d','e','f','g']

a=word[2]

print "a is: "+a

b=word[1:3]

print "b is: "

print b # index 1 and 2 elements of word.

c=word[:2]

print "c is: "

print c # index 0 and 1 elements of word.

print "d is: "

print d # All elements of word.

e=word[:2]+word[2:]

print "e is: "

print e # All elements of word.

f=word[-1]

print "f is: "

print f # The last elements of word.

g=word[-4:-2]

print "g is: "

print g # index 3 and 4 elements of word.

h=word[-2:]

print "h is: "

print h # The last two elements.

i=word[:-2]

print "i is: "

print i # Everything except the last two characters l=len(word)

print "Length of word is: "+ str(l)

print "Adds new element"

word.append('h')

print word

2.6 条件和循环语句

# Multi-way decision

x=int(raw_input("Please enter an integer:"))

if x<0:

x=0

print "Negative changed to zero"

elif x==0:

print "Zero"

else:

print "More"

# Loops List

a = ['cat', 'window', 'defenestrate']

for x in a:

print x, len(x)

2.7 如何定义函数

# Define and invoke function.

def sum(a,b):

return a+b

func = sum

r = func(5,6)

print r

# Defines function with default argument def add(a,b=2):

return a+b

r=add(1)

print r

r=add(1,5)

print r

并且,介绍一个方便好用的函数:

# The range() function

a =range(5,10)

print a

a = range(-2,-7)

print a

a = range(-7,-2)

print a

a = range(-2,-11,-3) # The 3rd parameter stands for step

print a

2.8 文件I/O

spath="D:/download/baa.txt"

f=open(spath,"w") # Opens file for writing.Creates this file doesn't exist.

f.write("First line 1.\n")

f.writelines("First line 2.")

f.close()

f=open(spath,"r") # Opens file for reading

for line in f:

print line

f.close()

2.9 异常处理

s=raw_input("Input your age:")

if s =="":

raise Exception("Input must no be empty.")

try:

i=int(s)

except ValueError:

print "Could not convert data to an integer."

except:

print "Unknown exception!"

else: # It is useful for code that must be executed if the try clause does not raise an exception

print "You are %d" % i," years old"

finally: # Clean up action

print "Goodbye!"

2.10 类和继承

class Base:

def __init__(self):

self.data = []

def add(self, x):

self.data.append(x)

def addtwice(self, x):

self.add(x)

self.add(x)

# Child extends Base

class Child(Base):

def plus(self,a,b):

return a+b

oChild =Child()

oChild.add("str1")

print oChild.data

print oChild.plus(2,3)

2.11 包机制

每一个.py文件称为一个module,module之间可以互相导入.请参看以下例子: # a.py

def add_func(a,b):

return a+b

# b.py

from a import add_func # Also can be : import a

print "Import add_func from module a"

print "Result of 1 plus 2 is: "

print add_func(1,2) # If using "import a" , then here should be "a.add_func"

module可以定义在包里面.Python定义包的方式稍微有点古怪,假设我们有一个parent文件夹,该文件夹有一个child子文件夹.child中有一个module a.py . 如何让Python知道这个文件层次结构?很简单,每个目录都放一个名为_init_.py 的文件.该文件内容可以为空.这个层次结构如下所示:

parent

--__init_.py

--child

-- __init_.py

--a.py

b.py

那么Python如何找到我们定义的module?在标准包sys中,path属性记录了Python的包路径.你可以将之打印出来:

import sys

print sys.path

通常我们可以将module的包路径放到环境变量PYTHONPATH中,该环境变量会自动添加到sys.path属性.另一种方便的方法是编程中直接指定我们的module路径到sys.path 中:

import sys

sys.path.append('D:\\download')

from parent.child.a import add_func

print sys.path

print "Import add_func from module a"

print "Result of 1 plus 2 is: "

print add_func(1,2)

总结

你会发现这个教程相当的简单.许多Python特性在代码中以隐含方式提出,这些特性包括:Python不需要显式声明数据类型,关键字说明,字符串函数的解释等等.我认为一个熟练的程序员应该对这些概念相当了解,这样在你挤出宝贵的一小时阅读这篇短短的教程之后,你能够通过已有知识的迁移类比尽快熟悉Python,然后尽快能用它开始编程.

相关主题