1、Python 基础学习笔记基于Python语言程序设计基础(第2版)第一部分 初识Python语言第1章 程序设计基本方法1.1 计算机的概念 计算机是根据指令操作数据的设备,具备功能性和可编程性两个基本特性。 计算机技术发展阶段:1. 第一阶段:1946-1981年,“计算机系统结构阶段”。2. 第二阶段:1982-2007年,“计算机网络和视窗阶段”。3. 第三阶段:2008年至今,“复杂信息系统阶段”。4. 第四阶段:月20年后某个时期开始,“人工智能阶段”。1.2程序设计语言1.2.1程序设计语言概述 机器语言:直接使用二进制代码表达指令,可被计算机硬件直接识别和执行。不同计算机结构的
2、机器指令不同。 汇编语言:使用助记符对应机器语言中的指令,可直接操作计算机硬件。不同计算机结构的汇编指令不同。机器语言和汇编语言都直接操作计算机硬件并基于此设计,统称“低级语言”。 高级语言:用更接近自然语言的方式描述计算问题。代码只与编程语言有关,与计算机结构无关。1.2.2编译和解释高级语言按执行方式可分为采用编译执行的静态语言和采用解释执行的脚本语言。 编译是将源代码转换成目标代码的过程。 解释是将源代码逐条转换成目标代码同时逐条运行目标代码的过程。1.2.3计算机编程 我学习Python的原因:1. 通过编程实现自动化,提高效率。2. 通过编程了解一个新的广阔世界。 学习一门编程语言(
3、重点在于练习)1. 掌握该语言的语法2. 结合问题设计程序结构3. 掌握解决问题的能力1.3Python语言概述1.3.1 Python语言的发展Python语言是一个语法简洁、跨平台、可扩展的开源通用脚本语言。 Python语言诞生于1990年,创世人为Guido。 2000年10月,Python 2.0正式发布,2010年,Python 2.x系列发布最后一版(2.7)。 2008年12月,Python 3.0正式发布,解释器内部采用完全面向对象的方式实现,代价是3.x系列版本无法向下兼容2.x系列的既有语法。Python 2.x已经是遗产,Python 3.x是这个语言的现在和未来。1.
4、3.2编写Hello程序print(Hello World)1.3.3 Python语言的特点 语法简洁 可跨平台 应用广泛 支持中文 强制可读:通过强制缩进体现语句间的逻辑关系提高了程序的可读性 模式多样:语法层面同时支持面向过程和面向对象两种编程方式 粘性扩展:通过接口和函数集成其他语言编写的代码 开源理念 库类丰富1.4 Python语言开发环境配置 Python解释器 IDLE开发环境 交互式启动 文件式启动 Python语言集成开发环境PyCharm1.5 程序的基本编写方法1.5.1 IPO程序编写方法每个程序都有统一的运算模式:输入数据、处理数据和输出数据。这种朴素的运算模式形成
5、了基本的程序编写方法:IPO(Input,Process,Output)方法。IPO不仅是程序设计的基本方法,也是描述计算问题的方式。1.5.2理解问题的计算部分 使用计算机解决问题的6个步骤:1. 分析问题2. 划分边界3. 设计算法4. 编写程序5. 调试测试6. 升级维护第2章 Python程序解析2.1 Python程序语法元素分析Python程序包括格式框架、注释、变量、表达式、分支语句、循环语句、函数等语法元素。程序的格式框架 Python语言采用严格的“缩进”来表明程序的格式框架,缩进表达了所属关系 在代码编写中缩进可通过Tab键实现,也可用多个空格实现,建议采用4个空格方式书写
6、代码注释 注释是辅助性文字,不被执行 单行注释:以#开头#这是注释 多行注释:以(3个单引号)开头和结尾这是注释这也是注释这还是注释命名 命名是为变量关联标识符的过程,用于确保程序元素的唯一性 标识符由字母、数字、下划线(和汉字)等字符及其组合构成 标识符的首字符不能是数字 ,且中间不能出现空格 标识符对大小写敏感保留字 保留字(Keyword)也被称为关键字,是被编程语言内部定义并保留使用的标识符 Python 的标准库提供了一个 keyword 模块,可以输出当前版本的所有关键字: import keyword ls=keyword.kwlist lslen(ls)33Python 3 有
7、33个保留字1. True2. False3. None4. and5. as6. assert7. break8. class9. continue10. def11. del12. elif13. else14. except15. finally16. for17. from18. global19. if20. import21. in22. is23. lambda24. nonlocal25. not26. or27. pass28. raise29. return30. try31. while32. with33. yield字符串 字符串(string)类型在程序中表示文本
8、字符串是字符的序列,可以按照单个字符或字符片段进行索引 字符串包括两种序号体系:正向递增序号、反向递减序号 正向递增序号:0L-1 反向递减序号:-L-1 区间访问方式:N:M(不包含M),可以混合使用正向递增序号和反向递减序号 字符串比较本质上是字符串对应Unicode编码的比较赋值语句 Python语言中,“=”表示“赋值”,将右侧的计算结果赋给左侧变量 同步赋值语句:可同时给多个变量赋值,=,分支语句 分支语句的作用是根据判断条件选择程序执行路径if:elif:else:循环语句 循环语句的作用是根据判断条件确定一段程序是否再执行一次或多次while () :for i in range
9、():input()函数 使用input()函数从控制台获得用户输入 input()函数以字符串类型返回结果 = input(提示性文字)input(请输入:)eval()函数 eval()函数的作用是间输入的字符串变成Python语句并执行x=eval(input(请输入:)Python语法允许在表达式内部标记之间增加空格,适当增加空格有助于提高代码可读性。但应注意,不能改变与缩进相关的空格数量、不能再变量名等命名中间增加空格。print()函数 print()函数可以输出字符信息,也可以用字符的形式输出变量 输出字符信息时,可以直接将待输出内容传递给print()函数 输出变量值时,pri
10、nt()函数用槽格式和过format()方法将变量和字符串结合到一起输出函数 函数可以理解为对一组表达特定功能表达式的封装,将特定功能代码编写在一个函数里,使程序模块化更好,便于阅读和复用 可通过保留字def自定义函数2.2 对象(库)的调用 .()表示调用一个对象的方法(),或调用一个函数库中的函数()面向对象编程是一种基于对象的编程范式。对象是事物的一种抽象,是一个实体,包含属性和方法两部分。属性是对象中的变量,方法是对象能完成的操作。 通过保留字import引用函数库1. import :程序调用库中所有函数,使用库中函数格式如下.()import turtleturtle.fd(100
11、) #控制画笔向当前行进方向前进1002. from import :from import from import *,“ * ”是通配符,表示所有函数 调用库中函数不再需要使用库名,格式如下()from turtle import *fd(100)2.3 turtle库语法元素分析tuetle库是一个图形绘制函数图绘图坐标体系 tuetle库绘制图形的基本框架是一个海龟在坐标系中爬行(前进、后退、左转、右转),其轨迹形成了绘制图形。 初始位置位于坐标(0,0),行进方向为水平右方。 使用turtle.setup()函数设置主窗体的大小和位置。turtle.setup(width,heigh
12、t,startx,stary) width,height分别表示窗口宽度和高度,值是整数表示像素值,值时小数表示与屏幕的比例 startx,stary分别表示窗口左侧和顶部与屏幕左侧和顶部的像素距离,如果值是none,窗口位于屏幕水平/垂直中央turtle.setup(0.8,0.8)画笔控制函数 turtle.penup():抬起画笔,之后移动画笔不绘制形状别名:turtle.pd()、turtle.down() turtle.pensize(width):设置画笔宽度,width无参数或为None时返回当前画笔宽度别名:turtle.width() turtle.pencolor():设置
13、画笔颜色,无参数输入时返回当前画笔颜色。(colorstring)参数表示颜色的字符串;(r,g,b)参数表示颜色对应的RGB值颜色颜色字符串GRB十六进制黑色black0,0,0#FFFFFF白色white255,255,255#000000灰色grey190,190,190#BEBEBE形状绘制函数 turtle.fd(distance):控制画笔向当前行进方向前进distance,值为负数表示向相反方向前进别名:turtle.forward(distance) turtle.seth(to_angle):控制画笔绘制方向,(to_angle)参数是绝对方向角度值(turtle库的坐标体系
14、以正东方向为绝对0度、正北方向为绝对90度) turtle.circle(radius,extent=None):根据半径radius绘制extent角度的弧形radius值为正时,半径在画笔左侧,值为负时,半径在画笔右侧;extent为正时,画笔逆时针前进,extent为负时,画笔顺时针倒退,extent不设置参数或参数为None时,绘制整圆。第二部分 深入Python语言第3章 基本数据类型3.1 数字类型 Python语言提供整数、浮点数、复数3种数字类型整数类型 整数类型共有4种进制表示:十进制、二进制、八进制和十六进制 默认情况整数采用十进制,其他进制需要增加引导符号进制种类引导符号
15、描述十进制无默认情况二进制0b或0B由字符0和1组成八进制0o或0O由字符0到7组成十六进制0x或0X由字符0到9、a到f、A到F组成浮点数类型 浮点数类型与数学中实数的概念一致,表示带有小数的数值 Python语言要求所有浮点数必须带有小数部分(可以是0),一区分浮点数和证书类型 浮点数有2中表示方法:十进制表示和科学计数法表示科学计数法使用字母e或E作为幂的符号,以10为基数,含义如下:e=a*10b2 由于计算机内部采用二进制运算,浮点数进行超过15位数字计算会产生误差使用整数表达浮点数的方法是高精确度运算的基本方法之一。 对于高精度科学计算外的绝大部分运算而言,浮点数类型已足够可靠,一
16、般认为浮点数类型没有范围限制,运算结果准确复数类型 复数类型表示数学中的复数复数可以看作是二元有序实数对(a,b),表示为a+bj,其中a是实数部分,简称实部,b是虚数部分,简称虚部。 Python 语言中,复数的虚部通过后缀j或J表示1.23e-4+5.67e+89j 复数类型中实数部分和虚数部分的数值都是浮点数类型,对于实数z,可用z.real和z.imag分别获得它的实部和虚部(1.23e-4+5.67e+89j).real(1.23e-4+5.67e+89j).imag3.2 数字类型的操作 Python 解释器为数字类型提供数值运算操作符、数值运算函数、类型转换函数等操作方法内置的数
17、值运算操作符(共9个)操作符描述x+yx与y之和x-yx与y之差x*yx与y之积x/yx与y之商x/yx与y之整数商,即不大于x与y之商的最大整数x%yx与y之商的余数,也称为模运算-xx的负值+xx本身x*yx的y次幂,即xy 操作符运算的结果可能会改变数字类型,3种数字类型之间存在一种逐渐扩展的关系:整数浮点数复数 上述9个二元数学操作符都有与之对应的增强赋值操作符x+=y 等价于 x=x+y 模运算(%)在编程中主要应用于具有周期规律的场景内置的数值运算函数(共6个)函数描述abs(x)x的绝对值divmod(x,y)(x/y,x%y),输出为二元组形式(也称为元组类型)pow(x,y,
18、z)(x*y)%z,表示该参数可省略round(x,ndigits)对x四舍五入,保留ndigits位小数,round(x)返回四舍五入的整数值max(x1,x2,xn)x1,x2,xn的最大值,n没有限定min(x1,x2,xn)x1,x2,xn的最小值,n没有限定内置的数字类型转换函数(共3个)函数描述int(x)将x转换为整数,x可以是浮点数或字符串float(x)将x转换为浮点数,x可以是整数或字符串complex(re,im)生成一个复数,实部为re,虚部为im,re可以是整数、浮点数或字符串,im可以是整数或浮点数但不能为字符串 int()函数将浮点数类型转换为整数时,小数部分会直
19、接被舍弃 复数不能直接转换为其他数字类型,可通过.real和.imag将复数的实部和虚部分别转换3.3 字符串类型及其操作字符串类型的表示 字符串是字符的序列表示 单引号字符串:单引号表示可以使用双引号作为字符串的一部分 双引号字符串:双引号表示可以使用单引号作为字符串的一部分 三引号字符串:三引号表示可以使用双引号、单引号作为字符串的一部分也可以换行 Python 字符串提供区间访问方式,采用N:M格式。表示从字符串中从N到M(不包含M)的字符串,可以混合使用正向递增序号和反向递减序号 反斜杠字符()在字符串中表示转义1. n 表示换行2. 表示反斜杠3. 表示单引号4. 表示双引号5. t
20、 表示制表符(Tab)基本的字符串操作符(共5个)操作符描述x+y连接两个字符串x与yx*n或n*x复制n次字符串xx in s如果x是s的子字符串,返回Ture,否则返回Falsestri索引,返回第i个字符strN:M切片,返回索引第N到第M个字符内置的字符串处理函数(共6个)函数描述len(x)返回字符串x的长度,也可返回其他组合数据类型元素个数str(x)返回任意类型x所对应的字符串形式chr(x)返回Unicode编码x对应的单字符ord(x)返回单字符表示的Unicode编码hex(x)返回整数x对应十六进制数的小写形式字符串oct(x)返回整数x对应八进制数的小写形式字符串内置的
21、字符串处理方法(共43个,常用16个) 在Python解释器内部,所有数据类型都采用面向对象的方式实现,封装为一个类 字符串是一个类,具有类似.()形式的字符串处理函数,称为方法方法描述str.lower()返回字符串str的副本,全部字符小写str.upper()返回字符串str的副本,全部字符大写str.islower()当str所有字符都是小写时,返回Ture,否则返回Falsestr.isprintable()当str所有字符都是可打印的,返回Ture,否则返回Falsestr.isnumeric()当str所有字符都是数字时,返回Ture,否则返回Falsestr.isspace()
22、当str所有字符都是空格,返回Ture,否则返回Flasestr.endswith(suffix,start,end)strstart:end以suffix结尾返回Ture,否则返回Flasestr.srartswith(prefix,start,end)strstart:end以prefix开始返回Ture,否则返回Flasestr.split(sep=None,maxsplit=-1)返回一个列表,由str根据sep被分割的部分构成str.count(sub,start,end返回strstart:end中sub子串出现的次数str.replace(old,new,count)返回字符串s
23、tr的副本,所有old子串被替换为new,如果count给出,则前count次old出现被替换str.center(width,fillchar)字符串居中函数str.strip(chars)返回字符串str的副本,在其左侧和右侧去掉chars中列出的字符str.zfill(width)返回字符串str副本,长度为width。不足部分在其左侧添加0str.format()返回字符串str的一种排版格式str.join(iterable)返回一个新字符串,由组合数据类型iterable变量的每个元素组成,元素间用str分隔3.4 字符串类型的格式化 字符串通过format()方法进行格式化处理字
24、符串格式化用于解决字符串和变量同时输出时的格式安排format()方法的基本使用 字符串format()方法的基本使用格式:.format() 模板字符串由一系列槽组成,用来控制修改字符串中嵌入值出现的位置(槽用表示,如果中没有序号,则按照出现顺序替换) 如需输入,采用表示;表示圆周率12是0.format(无理数,3.1415926,)format()方法的格式控制 format()方法模板字符串的槽除了包括参数序号,还可包括格式控制信息。槽内部样式: 格式控制标记用于控制参数显示时的格式:引导符号用于填充的单个字符右对齐、居中对齐槽的设定输出宽度数字的千位分隔符 适用于整数和浮点数浮点数小
25、数部分的精度或字符串的最大输出长度整数类型b,c,d,o,x,X;浮点数类型e,E,f,% 指宽度内除了参数外的字符采用什么方式表示,默认为空格 指参数在宽度内输出时的对齐方式 指当前槽的设定输出字符宽度,若实际参数长度比设定值大,则使用参数实际长度 用于显示数字类型的千分位分隔符 对于浮点数,表示小数部分输出的有效位数;对于字符串,表示输出的最大长度 表示输出整数好浮点数类型的格式规划。对于整数类型,1. b:整数的二进制;2. c:整数对应的Unicode字符;3. d:整数的十进制;4. o:整数的八进制5. x:整数的小写十六进制6. X:整数的大写十六进制对于浮点数类型,7. e:浮
26、点数对应的小写字母e的指数形式8. E:浮点数对应的大写字母E的指数形式9. f:浮点数的标准浮点形式10. %:浮点数的百分形式第4章 程序的控制结构4.1 程序的基本结构程序流程图 起止框表示一个程序的开始和结束 判断框判断一个条件是否成立,并根据判断结果不同选择不同的执行路径 处理框表示一组处理过程 输入/输出框表示数据输入或结果输出 注释框增加程序的解释 流向线以带箭头的直线或曲线形式指示程序的执行路径 连接点将多个流程图连接到一起程序的基本结构 程序有3种基本结构组成:顺序结构、分支结构和循环结构 顺序结构:程序按照线性顺序依次执行 分支结构:程序根据条件判断结果而选择不同向前执行路
27、径的一种运行方式(分支结构包括单分支结构和二分支结构;p97) 循环结构:程序根据条件判断结果向后反复执行(根据触发条件不同,循环结构包括条件循环和遍历循环)4.2 程序的分支结构单分支机构:if语句if语句语法格式:if : 语句块是if条件满足后执行的一个或多个语句序列 语句块中语句通过与if所在行形成缩进表达包含关系 if语句首先评估条件的结果值,若为Ture则执行语句块中的语句序列;若为False则跳过语句块中的语句 if语句中条件部分可以使用任何能够产生Ture或False的语句或函数形成判断条件最常见的方式是采用关系操作符关系操作符数学符号操作符含义大于=大于等于=等于!=不等于
28、Python使用=表示赋值语句,使用=表示等于二分支结构:if-else语句if-else语句语法格式:if : else : 二分支语句用于区分条件的两种可能 if条件满足时执行语句块1 if条件不满足时执行语句块2二分支结构的简洁表达(适合通过判断返回特定值) if else 表达式1/2一般是数字类型或字符串类型的一个值多分支结构:if-elif-else语句if-elif-else语句语法格式:if : elif : .else: Python依次评估寻找第一个结果为Ture的条件,执行该条件下的语句并跳过整个if-elif-else结构,执行后面的语句 如果没有任何条件成立,执行el
29、se下面的语句块 else语句是可选的4.3 程序的循环结构遍历循环:for语句for语句语法格式for in : 遍历循环可以理解为从遍历结构中中逐一提取元素,放在循环变量中,对于所提取的每个元素执行一次语句块循环N次:for i in rang(N): 遍历文件的每一行:for line in fi: 遍历字符串sfor c in s: 遍历列表lsfor item in ls: 遍历循环的扩展模式for in : else: 当for循环正常执行后,程序会继续执行else语句遍历循环:while语句while语句语法格式while : 当条件判断为Ture时,循环体重复执行语句块中的语句
30、;当条件为Flase时,循环终止,执行与while同级别缩进的后续语句无限循环的扩展模式while : else: 当while循环正常执行后,程序会继续执行else语句中的内容,else语句只在循环正常执行后才执行循环保留字:break和continue break用来跳出最内层for或while循环,脱离该循环后程序从循环代码后继续执行 continue用来结束当前当次循环,即跳出循环体中下面尚未执行的语句,但不跳出当前循环for s in BIT: for i in rang(2): print(s,end=) if s=I: break BBTT break语句与continue语句的
31、区别是,break语句结束整个循环过程,不再判断执行循环的条件是否成立;continue语句只结束本次循环,而不终止整个循环的执行for循环和while循环中都有一个else扩展用法。else语句仅在循环正常遍历了所有内容或由于条件不成立而结束循环的条件下执行。for s in PYTHON: if s =T: continue print(s,end=)else: print(正常退出)PYHON 正常退出for s in PYTHON: if s =T: break print(s,end=)else: print(正常退出)PY4.4 random库的使用random库采用梅森旋转算法生
32、成伪随机数序列,可用于除随机性要求更高的加解密算法外的大多数工程应用 Python内置的random库主要用于产生各种分布的伪随机数序列 random库提供9个常用函数函数描述seed(a=None)初始化随机数种子,默认值为当前系统时间random()生成一个0.0,1.0之间的随机小数randint(a,b)生成一个a,b之间的整数getrandbits(k)生成一个k比特长度的随机整数randrange(start,stop,step)生成一个start,stop之间以step为步数的随机整数uniform(a,b)生成一个a,b之间的随机小数choice(seq)从序列类型,例如列表中
33、随机返回一个元素shuffle(seq)将序列类型中的元素随机排列,返回打乱后的序列sample(pok,k)从pop类型中随机选取k个元素,以列表类型返回 生成随机数之前可通过seed()函数指定随机数种子,随机数种子一般是一个整数,只要种子相同,每次生成的随机数序列也相同4.5 程序的异常处理Python通过try、except等保留字提供异常处理功能异常处理:try-except语句 Python使用try-except语句实现异常处理try: except : 异常的高级用法 try-except语句可以支持多个except语句try: except : .except : excep
34、t : 异常语句还可以与else和finally保留字配合使用try: :except : else: finally: 第5章 函数和代码复用5.1 函数的基本使用函数的定义 函数是一段具有特定功能的、可重用的语句组 使用函数主要有两个目的:降低编程难度和代码重用 Python使用def保留字定义一个函数def(): return 函数名可以是任何有效的Python标识符 参数列表是调用该函数是传递给它的值,可以有零个(保留圆括号)、一个或多个(用逗号分隔) 函数体是函数每次被调用是执行的代码 当需要返回值时使用保留字return和返回值刘表,否则函数可以没有return语句,在函数体结束时
35、将控制权返回给调用者函数调用和执行的一般形式()函数的调用过程1. 调用程序在调用处暂停执行2. 在调用时将实参复制给形参3. 执行函数体语句4. 函数调用结束给出返回值,程序回到调用前的暂停处继续执行lambda函数 lambda函数又称匿名函数,将函数名作为函数结果返回=lambda:lambda函数与正常函数一样,等价于下面表达式:def(): return lambda函数用于定义简单的、能够在一行内表示的函数,返回一个函数类型f=lambda q,w,e,r:q+w+e+rf(1,2,3,4)10 lambda函数用于需要函数对象的场景5.2 函数的参数传递函数可定义可选参数,使用参
36、数的位置或名称传递参数值,根据函数中变量的不同作用域有不同的函数返回值方式可选参数和可变数量参数 函数定义时部分参数可直接为存在默认值的参数指定默认值,当函数被调用时如果没有传入对应的参数值则使用函数定义时的的默认值替代 默认参数必须指向不变对象 函数调用时需要按顺序输入参数,可选参数必须定义在非可选参数后dfe r(str,times=2): print(str*times)r(T)TTr(T)TTTT 函数定义时可设计可变数量参数,通过在参数前加星号(*)实现 带有星号的可变参数只能出现在参数列表最后,调用时这些参数被单指元组类型传递到函数中def vfunc(a,*b) print(ty
37、pe(b) for n in b: a+=n return avfunc(1,2,3,4,5)15 #1+2=3;3+3=6;6+4=10;10+5=15参数的位置和名称传递 函数定义时实参默认采用按照位置顺序的方式传递给函数,这种方式在参数很多的情况下可读性较差 Python提供了按照形参名称输入实参的方式,调用函数时指定参数名称,参数之间的顺序可任意调整函数的返回值 return语句用来退出函数并将程序返回到函数被调用的位置继续执行 return语句可同时将0个、1个或多个函数运算后的结果返回给函数被调用的位置 函数可以没有return,此时函数不返回值 函数也可以用return返回多个值
38、,多个值以元组类型保存def func(a,b): return b,as=func(t,2)print(s,type(s)(2, t) 5.4 datetime库的使用Python时间处理的标准函数库datetime提供里一批显示日期和时间的格式化方法。datetime库概述datetime库可以从系统中获得时间,并以用户选择的格式输出 datetime库以格林威治时间为基础,每天由3600*24秒精准定义datetime库以类的方式提供多种日期和时间1. datetime.date:日期表示类,坑人表示年、月、日等。2. datetime.time:时间表示类,可表示小时、分钟、秒、毫秒等
39、。3. datetime.datetime:日期和时间表示类,功能覆盖date和time类。4. datetime.timedelta:与时间间隔有关的类。5. datetime.tzinfo:与时区有关的信息表示类。datetime库解析(datetime类) datetime.datetime类的使用方式是首先创建一个datetime对象,然后通过对象的方法和属性显示时间创建datetime对象的3种方法:1. datetime.now():返回一个datetime类型,表示当前日期和时间,精确到毫秒from datetime import datetimenow=datetime.now
40、()nowdatetime.datetime(2018, 5, 13, 16, 49, 38, 627464)2. datetime.utcnow():返回一个datetime类型,表示当前日期和时间的UTC(世界标准时间)表示,精确到毫秒from datetime import datetimeutcnow=datetime.now()utcnowdatetime.datetime(2018, 5, 13, 8, 53, 59, 788612)3. 直接使用datetime()构造一个日期和时间对象:datetime(Y,M,D,hour=0,minute=0,second=0,microsecond=0)some=datetime(2018,5,13,17,0,0,0)somedatetime.datetime(2018, 5, 13, 17, 0)-创建datetime对象后,可利用该对象的属性显示时间(以上述“some”为例) datetime类的常用属性属性描述some.min固定返回datetime的最小时间对象,datetime(1,1,1,0,0)some.max固定返回datetime的最大时间对象,datetime(9999,12,31,23,59,59,999999)some.