V我50 送你一套 Python 编程入门教程

机器学习算法与Python实战

共 9889字,需浏览 20分钟

 · 2022-11-01

大家好,这是我朋友去年写的一套Python编程入门教程。
现在市面上这种教程多的离谱,特别知名的如廖雪峰、莫烦、小甲鱼都是免费,还有B站上各种免费视频,想白嫖可以 关闭本文 移步过去。
这套教程适合完全0基础入门者,唯一的特色是每一章节都设计了编程练习题,考察大家对本章知识掌握程度,答案会在下一章公布

一共15个章节,将近6万字。确实耗费了很大心力,不能白嫖,定价50元,朋友说他想每周四都疯狂,感兴趣可以支持一波。

注:付费用户可以赠送1位朋友免费阅读此文

1、认识Python及环境安装

2、数列和序列类型

3、系列类型的方法

4、linux命令和vim使用

5、散列类型

6、条件判断

7、函数基础和函数参数

8、函数的作用域

9、类的定义属性和方法

10、继承、多继承和魔术方法

11、保存文件类型

12、异常及认识模块

13、迭代器、生成器、包

14、正则表达式

15、new方法和装饰器

第一章 认识Python以及环境安装

认识Python

1、什么是Python?

  • 一种解释型、面向对象的、带有动态语义的高级程序设计语言。是一种让你在编程时能够保持自己的风格的程序设计语言,不用费劲就可以实现你想要的功能,并且编写的程序清晰易懂。
  • 2019年python编程语言荣获“年度编程语言”称号!

2、Python特征

  • Python被直白地称为"胶水语言",可作为主程序语言编写程序,也可以作为辅助脚本用于其他编程语言中。
  • 1)、简单易学 他使你能够关注于解决问题而不是去搞明白语言本身。Python有极简单的语法,极易上手。
  • 2)、解释型&编译性 Python语言写的程序不需要编译成二进制代码,直接用解析器用源代码运行代码。
  • 3)、面向对象 于其他语言如C++和java相比,Python是一种非常强大又简单的方式实现面向对象编程。
  • 4)、高级语言 使用Python语言编写程序,无需考虑管路内存一类的底层。
  • 5)、可扩展性及可嵌入性 可以把部分程序用C或C++编写,然后在Python上运行程序,也可以把Python嵌入C或C++程序,提供脚本功能。
  • 6)开源及可移植性
    Python代码开源,可复制代码进行学习使用,可移植在许多平台上。如Windows、Linux、FreeBSD、Macintosh、Solaris、OS/2等平台。
  • 7)、丰富的库 丰富的库,似乎已成为判断一门编程语言是否强大的重要标准。Python标准库确实很庞大。它可以帮助你处理各种工作。包括正则表达式、电子邮件、文档生成、线程、数据库、网页浏览器、密码系统、GUI(图形用户界面)、FTP和其他与系统有关的各种库。只要安装了Python,所有这些功能都能用了,这被称为Python"功能齐全"理念。除了标准库一份外,还有很多其他高质量的第三方库,如requests、Twisted和Python图像库等等。

3、Python用途

  • 1)、Web开发:Python有上百种Web开发框架,有很多成熟的模板技术,选择Python开发Web应用,不但开发效率高,而且运行速度快。常用的web开发框架有:Django、Flask、Tornado 等。

  • 2)、网络爬虫:google在早期大量地使用Python语言作为网络爬虫的基础,带动了整个Python语言的应用发展。以前国内很多人用采集器搜刮网上的内容,现在用Python收集网上的信息比以前容易很多了,如:

    a)从各大网站爬取商品折扣信息,比较获取最优选择;

    b)对社交网络上发言进行收集分类,生成情绪地图,分析语言习惯;

    c)按条件筛选获得豆瓣的电影书籍信息并生成表格……

应用实在太多,几乎每个人学习爬虫之后都能够通过爬虫去做一些好玩有趣有用的事。

  • 3)、数据分析:大数据分析中涉及到的分布式计算、数据可视化、数据库操作等,Python中都有成熟的模块可以选择完成其功能。对于Hadoop-MapReduce和Spark,都可以直接使用Python完成计算逻辑,这无论对于数据科学家还是对于数据工程师而言都是十分便利的。
  • 4)、自动化运维:使用Python脚本进行批量化的文件部署和运行调整都成了Linux服务器上很不错的选择。Python中也包含许多方便的工具,从调控ssh/sftp用的paramiko,到监控服务用的supervisor,再到bazel等构建工具,甚至conan等用于C++的包管理工具,Python提供了全方位的工具集合,而在这基础上,结合Web,开发方便运维的工具会变得十分简单。
  • 5)、人工智能:PythonAI热潮让Python语言的未来充满了无限的潜力。现在释放出来的几个非常有影响力的AI框架,大多是Python的实现,为什么呢?因为有很多库很方便做人工智能,比如numpy, scipy做数值计算的,sklearn做机器学习的,pybrain做神经网络的,matplotlib将数据可视化的。在人工智能大范畴领域内的数据挖掘、机器学习、神经网络、深度学习等方面都是主流的编程语言,得到广泛的支持和应用。
  • 6)、系统编程、数学处理、文本处理、图形处理、多媒体应用以及黑客编程等等这些应用都能利用Python得到很好发挥!

4、Python应用

  • 1)、Google:实现Web爬虫和搜索引擎很多组件
  • 2)、Yahoo:使用它管理讨论组
  • 3)、NASA:在它的几个系统中既用了Python开发,又将其作为脚本语言。
  • 4)、YouTube:视频分享服务大部分用Python编写的。
  • 5)在国内,很多大家比较熟悉的网站都是用Python开发的,比如豆瓣、知乎、网易、百度、阿里、新浪等等。

环境安装

1、Linux

大多数Linux发行版默认安装了Python环境。如想下载不通版本,可到python官网下载。软件安装方法参照Linux软件安装。

1)Python交互模式

输入Python可启动Python交互模式

如下图所示:知识点:a)、直接输入1+1这种算术,按【Enter】输出结果

b)、exit():退出Python交互模式

** 2)VIM文本编辑器**

程序编译推荐使用VIM 如下图所示:Python程序可以进入Python自带的VIM编辑器,输入命令:vim 文件名.pya)进入VIM模式后,按【A】、【O】或者【I】可以进入插入模式,即输入代码模式

b)输入代码完成,按【ESC】转为命令模式,即可退出vim编辑,输入(:wq)可以退出VIM文本编辑器。

c)输入python 1.py就可以运行这个py文件,输出运行的结果。

  • pyvip@Vip:~/first$ python 1.py
  • hello world

2、Windows

  • 可下载安装python的msi开发环境
  • 自带python的GUI开发环境
  • 开发工具很多

Windows下,按【ctrl】+【R】,输入python,就可以看到python版本信息,进到了python交互模式。

如下图所示:

第二章 数列和序列类型

一、Python变量

1、定义

学习数据类型之前,先来学习以下什么是python变量?

  • 直白意思就是给数据起个名字。变量是计算机内存中的一块区域,变量可以存储规定范围内的值,而且值可以改变。

2、数据类型

Python有六种数据类型(可划分成数列和序列两种类型):

  • Number(数字)
  • String(字符串)
  • List(列表)
  • Tuple(元组)

3、用法

1)变量命名规则:

  • 变量名有字母、数字、下划线组成
  • 数字不能作为开头
  • 不可以使用关键字,如python,re,os这种python自带模块名
  • a a1 a_ a_1

2)变量赋值:

  • 是变量声明和定义的过程
  • a=1
//定义正确的变量名
>>> a1=123
>>> a_1=234
>>> _a1=345
>>> 1a=500
File "<stdin>", line 1
  1a=500
   ^
SyntaxError: invalid syntax
//异常分为多种类型的异常,SytaxError:语法错误,invalid syntax:无效语法,定位到‘1a’,结合变量命名规则得出变量不能以数字开头命名。
// 小案例:定义一个变量,赋值为10
>>>a=10
>>>print(a)
10

二、数列类型

1、数列类型分类

  • Number(数字)为数列类型
//数列类型分为:
//整数(int)、浮点数(flost)、复数(complex)、布尔(bool)
>>> one=1
>>> type(one)
<class 'int'>    //'int':整数型
>>> two=2.2
>>> type(two)  
<class 'float'>    //'float':浮点型
>>> three=(1+2j)
>>> type(three)
<class 'complex'>    //'complex':复数型
>>> four=(True)
>>> type(four)
<class 'bool'>    //'bool':布尔型(TrueFalse)
>>>

2、Python变量与内存空间关系

首先,内存空间听上去比较抽象,可以简单理解为有着很多小存物柜的柜子,而小存物柜都贴着标签。而Python中的id就代表各种小存物柜。

//不同变量不同数值代表不同内存空间
>>> a=2
>>> b=3
>>> id(a)    id()是python的系统函数,返回对象的内存起始地址。
140723019542816
>>> id(b)
140723019542848
//不同变量相同数值代表同内存空间
>>> d=12
>>> e=12
>>> id(d)
140723019543136
>>> id(e)
140723019543136
>>>5
//同一变量赋值可变
>>> c=123
>>> id(c)
140721953341504
>>> c=345
>>> id(c)
1624836982960
>>> c
345

在这里,我们简单了解下Python处理数据的方法。在其他语言,如C语言,在定义变量时需要开启一个存放变量的空间。在Python里,先在内存上存储数据后,再通过一个标签去引用数据,这个标签就是变量。

3、数列运算

  • 赋值运算符
>>> x=2
>>> x+=3    //即x=2,x=x+3,则x=5
>>> x
5
>>> x-=1    //即x=5,x=x-1,则x=4
>>> x
4
>>> y=3
>>> y*=2    //即y=3,y=y*2,则y=6
>>> y
6
>>> y/=3    //即y=6,y=y/3,则y=2.0
>>> y
2.0
>>> y%=2    //即y=2.0,y=y/2取余数,则y=0.0
>>> y
0.0
  • 算术运算符
>>> x=3
>>> y=2
>>> x+y
5
>>> x-y
1
>>> x*y
6
>>> x/y
1.5
>>> x//y
1
>>> x%y
1
  • 关系运算符进行关系运算时,输出,如果是正确为True,错误为False。
>>> 1<2
True
>>> 2>3
False
>>> 2==2
True
  • 逻辑运算符
>>> True and False
False
>>> True or False
True
>>> not True
False
  • 精确运算和取整运算符
//精确运算,导入decimal模块
>>> import decimal
>>> s=decimal.Decimal('2.8')
>>> d=decimal.Decimal('1.2')
>>> s-d
Decimal('1.6')
//取整运算,导入math模块
>>> import math
>>> a=2.3
>>> math.ceil(a)
3
>>> math.floor(a)
2
>>>

三、序列类型

  • 请思考123和'123'一样吗?
  • 请熟记()、[]、{}三种括号

1、序列类型分类

  • String(字符串)
  • List(列表)
  • Tuple(元组)

2、String(字符串)

字符串定义:用""或者''或者''''''包起来的就是字符串,使用引号定义的一组可以包含数字、字母、符号(非特殊系统符号)的集合。

创建字符串:

  • a='Hello world!'
  • a="Hello world!"
  • a='''Hello world!'''
  • 三重引号通常用来制作字符串,在面向对象时详解。
>>> a='123'
>>> type(a)
<class 'str'>    //'str'代表字符串类型
>>> b=123
>>> a+b
Traceback (most recent call last):

File "<stdin>", line 1in <module>
TypeError: can only concatenate str (not "int") to str
>>> type(b)
<class 'int'>

上面出现了一个报错TypeError:类型错误,可以看出a变量的数据类型是字符串,b变量的数据类型是整数,所以不同类型的变量不能运算。

>>> say='let's go'
File "<stdin>", line 1
  say='
let's go'
           ^
SyntaxError: invalid syntax

上面出现的报错SyntaxError:语法错误,字符串引号是一对存在的,如果字符串里定义了单引号,那么,字符串引号应该用双引号或三引号。

>>> say='let\'s go'    //还可以通过\(反斜杠:转义字符)保留单引号不被转义
>>> say
"let's go"

对于该论述,欢迎读者查阅文章,转义字符

3、List(列表)

列表定义:list是处理一组有序项目的数据结构,即你可以在一个列表中存储一个序列的项目

  • 列表是可变类型的数据
  • 列表的组成:用[]表示列表,包含了多个以逗号隔开的数字或字符串。

创建列表:

  • list1=['Tom','Jim','张三','李四']
  • list2=[1,2,3,4,5]
  • list3=['str1','str3','str5']
>>>t=[]    //一个空的列表由一对空的中括号组成
>>> type(t)
<class 'list'>
>>> t=[1,2,3,'hello']    //一般的列表 
>>> type(t)
<class 'list'>

4、Tuple(元组)

元组定义:元组和列表十分类似,只不过元组和字符串一样是不可变即你不能修改元组。

  • 元组通过圆括号中用逗号分割的项目定义。
  • 元组通常用在使语句或用户定义的函数能够安全地采用一组值得时候,即被使用得元组得值不会改变。

创建元组:

>>> x=()    //一个空的元组由一对空的圆括号组成
>>> type(x)
<class 'tuple'> 
>>> y=(12,)    //含有单个元素的元组
>>> type(y)
<class 'tuple'>    
>>> t=('hello',123'world')    //一般的元组
>>> type(t)
<class 'tuple'>

四、序列相互转换

1、列表转字符串、元组

>>> li=[1,2,3,'人','生','苦','短']
>>> sli=str(li)
>>> sli
"[1, 2, 3, '人', '生', '苦', '短']"
>>> tli=tuple(li)
>>> tli
(123'人''生''苦''短')

2、字符串转列表、元组

>>> s='人生苦短,I love python!'
>>> ls=list(s)
>>> ls
['人''生''苦''短'',''I'' ''l''o''v''e'' ''p''y''t''h''o''n''!']
>>> ts=tuple(s)
>>> ts
('人''生''苦''短'',''I'' ''l''o''v''e'' ''p''y''t''h''o''n''!')

3、元组转字符串、列表

>>> tu=(123'人''生''苦''短')
>>> stu=str(tu)
>>> stu
"(1, 2, 3, '人', '生', '苦', '短')"
>>> ltu=list(tu)
>>> ltu
[123'人''生''苦''短']

总结:可以看出,list、tuple转str类型都是在外侧强制加上字符串的标志(‘’/'' ''/''' '''),list、tuple类型相互转时内容基本不会变化,只是改为各自的标志(list[]、tuple()),这些都好理解,但需要注意的是,str转list或tuple时,str的内容会被拆解,这有时候并不符合我们的预期,所以可以用下面的方法:

>>> s='人生苦短,I love python!'
>>> ls=s.split()    #利用str的split方法,分割成list类型。更多序列方法可看下一章《序列的方法》
>>> ls
['人生苦短,I''love''python!']

还有list或者tuple转str的时候,所得的结果貌似也不太符合我们的预期,所以,可以这样:

>>> li=['人','生','苦','短']
>>> ''.join(li)
'人生苦短'

利用str的join方法,将list加入到str中,tuple同样适用。

五、课堂练习

  • 1、创建一个变量,并给它赋一个数值(任何数值都行),然后使用print显示这个变量。
  • 2、改变这个变量,可以用一个新值替换原来的值,或者将原来的值增加某个量,使用print显示这个新值。
  • 3、创建另一个变量,并赋给它一个字符串('某个文本'),然后使用print显示这个变量。
  • 4、将第三题的变量转换为列表形式和元组形式。

注释:答案请查看下一章节《序列的方法》

浏览 22
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报