目录

  • 前言
  • 1、环境搭建:
  • 2、Python3基础语法:
  • 3、Python3基本数据类型:
  • 4、Python3运算符:
  • 5、Python3数字(Number):
  • 6、Python3字符串:
  • 7、Python列表:
  • 8、Python元组:
  • 9、Python字典:
  • 10、Python集合:
  • 11、Python3条件控制:
  • 12、Python3循环语句:
  • 13、Python3迭代器和生成器
  • 14、Python3函数
  • 15、Python3数据结构
  • 16、模块
  • 17、Python3输入与输出
  • 18、Python3 File
  • 19、Python3错误和异常:
  • 20、Python3面向对象
  • 21、Python3标准库概览
  • 22、Python3实例
  • 进阶篇:
  • 23、Python3正则表达式
  • 24、Python CGI编程
  • 25、Python MySQL - mysql-connector 驱动
  • 26、Python3 MySQL 数据库连接 - PyMySQL 驱动
  • 27、Python3 网络编程
  • 28、Python3 SMTP发送邮件
  • 29、Python3 多线程
  • 30、Python3 XML解析
  • 31、Python3 JSON数据解析
  • 32、Python3 日期和时间
  • 33、Python Mongodb
  • 最后


前言

这篇文章是当时Python3入门是的学习笔记,俗话说“好记性不如烂笔筒”,但有很多地方笔记粗糙,有疑问和不对地方欢迎大家指出来,谢谢!

1、环境搭建:

一般liunx系统下,自带python程序。

2、Python3基础语法:

  1. 单行注释:# 第一个注释
  2. 多行注释:还有’’'和"""
  3. 行与缩进:使用相同缩进的空格数来表示代码块,不需要使用大括号{}。
  4. 多行语句:一条语句很长,可以使用反斜杠 \ 来实现多行语句,但是在[],{}或()的多行语句中,不需要使用反斜杠。
  5. 数值(Number)类型:python只有四种类型:int整型,bool布尔,float浮点数,complex复数。
  6. 字符串(String):
    转义符:’
    使用r可以让反斜杠你发生转义
    Python中的字符串不能改变
    Python没有单独的字符类型,一个字符就是长度为1的字符串
  7. 等待用户输入:input(“请输入内容”)
  8. 使用import与from…import来导入相应的模块。

3、Python3基本数据类型:

Python中的变量和javascript的变量类似,变量本身是没有类型的,而是变量所指向内存中的对象是有类型的。
Python3中有6个标准的数据类型:
不可变数据 3个:Number数字,String字符串,Tuple元组
可变数据3个:List列表,Dictionary字段,set集合。

List:list = [ 'abcd', 786 , 2.23, 'runoob', 70.2 ]
    Tuple元组:tuple = ( 'abcd', 786 , 2.23, 'runoob', 70.2 )
    Set集合:student = {'Tom', 'Jim', 'Mary', 'Tom', 'Jack', 'Rose'}
    Dictionary字段(类似java中的map):tinydict = {'name': 'runoob','code':1, 'site': 'www.runoob.com'}

注意:{}代表的是空字段,空集合需要使用set()。
Python提供了数据类型转换,方法可以查阅文档。

4、Python3运算符:

开发语言的运算符大致都是一样的,具体可自行查阅文档。

5、Python3数字(Number):

Python数字类型转换:int(),float(),complex(),complex()。
Python数字运算:Python解释器可以作为一个简单的计算器。
Phthon数据函数:查文档。
随机数函数:有几个函数,查文档。
三角函数:查文档。

6、Python3字符串:

访问字符串中的值:str=“hello”; str2=str[1:3];
Python字符串格式化:字符串格式化使用与C中sprintf函数一样的语法:print (“我叫 %s 今年 %d 岁!” % (‘小明’, 10))
Python 三引号:允许一个字符串跨多行,字符串中可以包含换行符,制表符,以及其他特殊字符。
Python的字符串内建函数:查文档。

7、Python列表:

对应java中的List集合。
list1 = [‘Google’, ‘Runoob’, 1997, 2000];

8、Python元组:

元组和列表的区别在于:列表中的元素可以修改,而元组中的元素不能修改。
tup1 = (‘Google’, ‘Runoob’, 1997, 2000);
元组之间可以使用 + 和 * 号进行运算,意味着可以进行组合和复制,运算后生成一个新的元组。
元组中的元素是不可以删除的,但是可以使用del语句来删除整个元组。
元组的是索引和截取和列表一样。

9、Python字典:

对应java中的map:展示案例
dict = { ‘name’:‘tom’, ‘age’:18 , ‘address’:‘湖南长沙岳麓区’ }
删除键:del dict[‘address’]
清空字段:dict.clear()
Python字典有内置的函数和方法:查阅文档。

10、Python集合:

对应java中的Set:数据无序,不重复。
集合有add, remove, discard, pop, len, clear 等方法,更多集合内置方法查看文档。

11、Python3条件控制:

if condition_1:
         statement_block_1
     elif condition_2: 
        statement_block_2 
    else: 
        statement_block_3

Python中用elif代替了else if。
注意:在python中没有switch-case语句。

12、Python3循环语句:

有while和for语句,但是没有do…while语句。
特殊的是,while循环可以使用else语句:

count = 0 
    while count < 5: 
            print (count, " 小于 5")
            count = count + 1
    else: 
            print (count, " 大于或等于 5")

for循环的格式案例:

languages = ["C", "C++", "Perl", "Python"]
    for x in languages:
            print (x)

range()函数:如果你需要遍历数字序列,可以使用内置range()函数。它会生成数列。
break和continue语句。
特殊的pass语句:Python 中的pass是空语句,是为了保持程序结构的完整性,一般只做占位符。

13、Python3迭代器和生成器

迭代器:有两个基本方法:iter()和next()。

list=[1,2,3,4]   
      it = iter(list) # 创建迭代器对象
      for x in it: 
         print (x, end=" ")

StopIteration:该异常用于标识迭代的完成,防止出现无限循环的情况。可以在设置完成指定循环次数之后触发该异常来结束迭代。
生成器:
在python中,使用了yield的函数被称为生成器。
调用一个生成器函数,返回的是一个迭代器对象。

14、Python3函数

函数定义:
# 计算面积函数

def area(width, height):
return width * height
参数传递:
a = [1,2,3]
a = “hello”
变量a是没有类型的,它仅仅是一个对象的引用(一个指针)。

匿名函数:python使用lambda来创建匿名函数。
案例: sum = lambda arg1, arg2: arg1 + arg2 # 可写函数说明

调用 sum( 10, 20 )
函数的值传递,引用传递。
函数可以设置默认参数 默认值:
def printinfo( name, age = 35 ):
不定长参数:
语法需查阅文档。
变量作用域:
L:局部作用域; E:闭包函数外的函数内中; G:全局作用域; B:内建作用域;
以 L –> E –> G –>B 的规则查找

global和nonlocal关键字:当内部作用域想修改外部作用域的变量时,就要用到global和nonlocal关键字。

15、Python3数据结构

1)列表:
列表可以修改,而字符串和元组不能。
列表有一些操作文档,查阅文档。

2)把列表当堆栈使用:
堆栈的数据结构:后进先出。用append()方法把元素添加到堆栈顶,用pop()把元素从堆栈顶释放出来。

3)把列表当队列使用:
可以用popleft()方法取出第一个元素,append()把元素添加到最后一个位置。但是拿列表这样使用的效率不高。在列表的最后添加或者弹出元素速度快,然而在列表里插入或者从头部弹出速度却不快(因为所有其他的元素都得一个一个地移动)。

4)列表推导式:
推导式comprehensions(又称解析式),是Python的一种独有特性。推导式是可以从一个数据序列构建另一个新的数据序列的结构体。
推导式支持:列表,集合,字典。

5)嵌套列表解析:
Python的列表还可以嵌套。

6)del语句:
使用 del 语句可以从一个列表中依索引而不是值来删除一个元素。这与使用 pop() 返回一个值不同。可以用 del 语句从列表中删除一个切割,或清空整个列表(我们以前介绍的方法是给该切割赋一个空列表)。

7)元组和序列:
元组由若干个逗号分割的值组成

8)集合:
集合是一个无序不重复元素的集,基本功能包括关系测试和消除重复元素。

9)字典:
字典以关键字为索引,关键字是任意不可变类型,通常为字符串或数值。
可以看作是无序的键==》值对集合。(对应java中的Map)

10)遍历技巧:
–在遍历字典时,可以使用items()方法,将键和值同时解读出来。
–在遍历序列时,可以使用enumerate()方法,获取索引位置和对应的值。
–同时遍历两个或多个序列,可以使用zip()组合。
–要反向遍历一个序列,可以先指定一个序列,在使用reversed()函数。
–要按顺序遍历一个序列,可以使用sorted()函数返回一个已排序的序列,并不修改原值。

16、模块

1)概念定义:Python 提供了一个办法,把这些定义存放在文件中,为一些脚本或者交互式的解释器实例使用,这个文件被称为模块。(对应java中的class文件)

2)、import:导入另一个模块,就可以使用其模块下的方法。

3)from…import:让你从模块中导入一个指定的部分到当前命名空间下。

4)from…import*:把一个模板的所有内容都导入当前命名空间下。

5)__name__属性(双下划线): 一个模块被另一个程序第一次引入时,其主程序将运行。如果我们想在模块被引入时,模块中的某一程序块不执行,我们可以用__name__属性来使该程序块仅在该模块自身运行时执行。
if name == ‘main’ : print(‘程序自身在运行’) else: print(‘我来自另一模块’)

6)dir()函数:
内置的dir()函数,可以找到指定模块内定义的所有名称,已一个字符串列表的格式返回:dir(sys)
如果没有给定参数,则会罗列当前定义的所有名称:dir()
主模块的名称永远是“mian”。

7)标准模块:
Python本身带着一些标准的模块库

8)包:
包是一种管理Python模块命名空间的形式。

17、Python3输入与输出

1)输出格式美化:str.format()函数来格式化输出值 ; 希望将输出值转成字符串,可以使用repr()或str()函数来实现。

2)读取键盘输入:
Python提供input()内置函数从标准输入读入一行文本。

3)读和写文件:
open() 将会返回一个file对象,语法如下:
open(filename,mode):
filename:包含了你要访问的文件名称的字符串值。
mode:决定了打开文件的模式:只读,写入,追加等。具体模式查看文档。
案例:f = open("/home/dev/文档/其他文档/test.py" , “a+”)
f.write(“学习语法”)
f.close()

4)文件对象的方法:
f.read(size) :读取一定数目的数据,然后作为字符串或字节对象返回。size是一个可选参数,没有填或者负数,那么该文件的所有内容都将被读取并返回。
f.readline():会从文件中读取单独的一行。
f.readlines():将返回该文件包含的所有行。可以设置可选参数,sizehint。
f.write():将string写入到文件中,然后返回写入的字符数。
f.tell():返回文件对象当前所处的位置,它是从文件开头算起的字节数。
f.seek():改变文件当前的位置,可以使用f.seek(offset,from_what)函数:
from_what的值:0表示起始位置,1表示当前位置,2表示文件的末尾。
offset的值:表示移动多少个字符。
f.close():关闭文件并释放系统的资源。
当处理一个文件对象时,使用with关键字是非常好的方式。在结束后,它会帮你正确的关闭文件,代码也比try-finally更见 简洁。

5)pickle模块
Python的pickle模块实现了基本的数据序列和反序列化。
通过pickle的序列化操作可以将程序中的对象信息保存到文件中,永久存储。
通过pickle的反序列化操作,我们能够从文件中创建上一次程序保存的对象。
基本接口:pickle.dump(obj,file,[,protocol]) // 写入数据
x = pickle.load(file) // 读取数据

18、Python3 File

1)open():用于打开一个文件,返回文件对象。
注意:使用open()方法一定要保证关闭文件对象,即调用close()方法。
完整的语法格式为:open(file, mode=‘r’, buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)。
mode为文件打开模式,有多种,查看文档。

2)file对象
如第17点有一些read(),write()等函数提供使用。

3)Python3 OS文件/目录方法:
Os模块提供了丰富的方法处理文件和目录,文档中大致有64个。

19、Python3错误和异常:

错误分为两种:语法错误和异常。
1)异常处理:和java中的try{}catch{}类似。

try:
            逻辑代码
    except  IOError:
            代码
    else:
            代码
    finally:
            代码

2)抛出异常:
raise 异常的实例或异常的类 //类似java的throw 关键字

3)用户自定义异常
异常类需要间接或者之间继承Exception类。

4)定义清理行为:
try… finally

5)预定义的清理行为:
关键词 with 语句就可以保证诸如文件之类的对象在使用完之后一定会正确的执行他的清理方法。

20、Python3面向对象

1)面向对象技术简介:

2)类定义:

3)类对象:

4)self代表类的实例,而非类

5)类的方法:
在类的内部,使用def关键字来定义一个方法,与一般函数不同的是,类方法必须包含self参数,并且为第一个,self代表的是类的实例。

6)继承:
语法:class DerivedClassName(modname.BaseClassName):
括号中填写父类,基类与派生类必须定义在同一个作用域内。

7)多重继承:
语法:class DerivedClassName(Base1, Base2, Base3):
#方法名同,默认调用的是在括号中排前地父类的方法

8)方法重写:

9)类属性和方法:
类的私有属性
__private_attrs:两个下划线开头,声明该属性为私有,不能在类的外部被使用或直接访问。在类内部的方法中使用时 self.__private_attrs。
类的方法
在类地内部,使用 def 关键字来定义一个方法,与一般函数定义不同,类方法必须包含参数 self,且为第一个参数,self 代表的是类的实例。
self 的名字并不是规定死的,也可以使用 this,但是最好还是按照约定是用 self。
类的私有方法
__private_method:两个下划线开头,声明该方法为私有方法,只能在类的内部调用 ,不能在类地外部调用。self.__private_methods。

10)Python运算符重载

21、Python3标准库概览

1)操作系统接口:
Os模块提供了不少与操作系统相关联的函数。
针对日常的文件和目录的管理任务,:mod:shutil模板提供了一个易于使用的高级接口:import shutil

2)文件通配符
glob模块提供了一个函数用于从目录通配符搜索中生成文件列表:
>>> import glob
>>> glob.glob(’*.py’)

3)命令行参数
通用工具脚本经常调用命令行参数。这些命令行参数以链表形式存储于 sys 模块的 argv 变量。
例如在命令行中执行 “python demo.py one two three” 后,再输入print(sys.argv)查看结果。

4)错误输出重定向和程序终止
sys 还有 stdin,stdout 和 stderr 属性,即使在 stdout 被重定向时,后者也可以用于显示警告和错误信息。
大多脚本的定向终止都使用 “sys.exit()”。

5)字符串正则匹配
re模块为高级字符串处理提供了正则表达式工具。对于复杂的匹配和处理,正则表达式提供了简洁、优化的解决方案。

6)数学
math模块提供了很多数学运算函数。
random模块提供了生成随机数的工具。

7)访问 互联网
有几个模块用于访问互联网以及处理网络通信协议。其中最简单的两个是用于处理从 urls 接收的数据的 urllib.request 以及用于发送电子邮件的 smtplib:

8)日期和时间
datetime模块为日期和时间处理同时提供了简单和复杂的方法。
支持日期和时间算法的同时,实现的重点放在更有效的处理和格式化输出。
该模块还支持时区处理:

9)数据压缩
以下模块直接支持通用的数据打包和压缩格式:
zlib,gzip,bz2,zipfile,以及 tarfile。

10)性能度量
有些用户对了解解决同一问题的不同方法之间的性能差异很感兴趣。Python 提供了一个度量工具,为这些问题提供了直接答案。
例如,使用元组封装和拆封来交换元素看起来要比使用传统的方法要诱人的多,timeit 证明了现代的方法更快一些。
相对于 timeit 的细粒度,:mod:profile 和 pstats 模块提供了针对更大代码块的时间度量工具。

11)测试模块
doctest模块提供了一个工具,扫描模块并根据程序中内嵌的文档字符串执行测试。
unittest模块不像 doctest模块那么容易使用,不过它可以在一个独立的文件里提供一个更全面的测试集。

22、Python3实例

练习一些简单的小案例。
1)显示日历
# 引入日历模块
import calendar
# 显示日历
print(calendar.month(2019,1))
2)文件IO

# 写文件
    with open("test.txt", "wt") as out_file:
        out_file.write("该文本会写入到文件中\n看到我了吧!")
    # Read a file
    with open("test.txt", "rt") as in_file:
        text = in_file.read()
    print(text)

进阶篇:

23、Python3正则表达式

1)re.match函数:re.match(pattern, string, flags=0)
参数 描述
pattern 匹配的正则表达式
string 要匹配的字符串。
flags 标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等。参见:正则表达式修饰符 - 可选标志
re.match 尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回none。

2)re.search方法
re.search 扫描整个字符串并返回第一个成功的匹配。
函数语法:
re.search(pattern, string, flags=0)

3)re.match与re.search的区别
re.match只匹配字符串的开始,如果字符串开始不符合正则表达式,则匹配失败,函数返回None;而re.search匹配整个字符串,直到找到一个匹配。

4)检索和替换
Python 的re模块提供了re.sub用于替换字符串中的匹配项。
语法:re.sub(pattern, repl, string, count=0)
参数:
pattern : 正则中的模式字符串。
repl : 替换的字符串,也可为一个函数。
string : 要被查找替换的原始字符串。
count : 模式匹配后替换的最大次数,默认 0 表示替换所有的匹配。

5)compile 函数
compile 函数用于编译正则表达式,生成一个正则表达式( Pattern )对象,供 match() 和 search() 这两个函数使用。
语法格式为:

6)findall
在字符串中找到正则表达式所匹配的所有子串,并返回一个列表,如果没有找到匹配的,则返回空列表。
注意: match 和 search 是匹配一次 findall 匹配所有。
语法格式为:
findall(string[, pos[, endpos]])

7)re.finditer
和 findall 类似,在字符串中找到正则表达式所匹配的所有子串,并把它们作为一个迭代器返回。
re.finditer(pattern, string, flags=0)

8)re.split
split 方法按照能够匹配的子串将字符串分割后返回列表,它的使用形式如下:
re.split(pattern, string[, maxsplit=0, flags=0])

9)正则表达式对象
re.RegexObject
re.compile() 返回 RegexObject 对象。
re.MatchObject
group() 返回被 RE 匹配的字符串。
start() 返回匹配开始的位置
end() 返回匹配结束的位置
span() 返回一个元组包含匹配 (开始,结束) 的位置

10)正则表达式修饰符 - 可选标志

11)正则表达式模式

24、Python CGI编程

25、Python MySQL - mysql-connector 驱动

使用 mysql-connector 来连接使用 MySQL, mysql-connector 是 MySQL 官方提供的驱动器。
Python也可以对数据库进行增删改查等操作。

26、Python3 MySQL 数据库连接 - PyMySQL 驱动

PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个库,Python2中则使用mysqldb。
PyMySQL 遵循 Python 数据库 API v2.0 规范,并包含了 pure-Python MySQL 客户端库。

27、Python3 网络编程

Socket和SocketServer。
Python Internet模块,提供了一些重要的模块,比如HTTP,FTP,NNTP,邮件等协议的模板。

28、Python3 SMTP发送邮件

29、Python3 多线程

1)有两个线程模块:
_thread
threading(推荐使用)
thread 模块已被废弃。用户可以使用 threading 模块代替。所以,在 Python3 中不能再使用"thread" 模块。为了兼容性,Python3 将 thread 重命名为 “_thread”。
线程模块同样提供了Thread类来处理线程,Thread类还提供了很多方法。

2)线程优先级队列(Queue)
Python 的 Queue 模块中提供了同步的、线程安全的队列类,包括FIFO(先入先出)队列Queue,LIFO(后入先出)队列LifoQueue,和优先级队列 PriorityQueue。
这些队列都实现了锁原语,能够在多线程中直接使用,可以使用队列来实现线程间的同步。
Queue 模块中的常用方法。

30、Python3 XML解析

常见的XML编程接口有DOM和SAX,这两种接口处理XML文件的方式不同,使用的场合也不同。

31、Python3 JSON数据解析

Python3 中可以使用 json 模块来对 JSON 数据进行编解码,它包含了两个函数:
json.dumps(): 对数据进行编码。
json.loads(): 对数据进行解码。
在json的编解码过程中,python 的原始类型与json类型会相互转换

32、Python3 日期和时间

1)时间元组:
很多python函数用一个元组装起来的9组数字处理时间。
2)time模块:
3)格式化时间:
4)日历模块:Calendar
5)datetime模块

33、Python Mongodb

1)pip安装:
pip是一个通用的Python包管理工具,提供了对Python包的查找、下载、安装、卸载的功能。
2)使用文档,链接Mongodb,进行增删改查操作。

最后

本篇文章是本人入门学习Python3的学习笔记,内容偏理论知识,并且枯燥无味。同样的知识学习一次是记不住,只有反复去看才能慢慢了解它。欢迎大家对本文中错误的和不足的地方提出来,谢谢!