《Python基础学习笔记.pdf》由会员分享,可在线阅读,更多相关《Python基础学习笔记.pdf(69页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
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 系列
4、的既有语法。Python 2.x 已经是遗产,Python 3.x 是这个语言的现在和未来。1.3.2 编写 Hello 程序 print(Hello World)1.3.3 Python 语言的特点 语法简洁 可跨平台 应用广泛 支持中文 强制可读:通过强制缩进体现语句间的逻辑关系提高了程序的可读性 模式多样:语法层面同时支持面向过程和面向对象两种编程方式 粘性扩展:通过接口和函数集成其他语言编写的代码 开源理念 库类丰富 1.4 Python 语言开发环境配置 Python解释器 IDLE 开发环境 交互式启动 文件式启动 Python 语言集成开发环境PyCharm 1.5 程序的基本编
5、写方法 1.5.1 IPO 程序编写方法 实用文档.每个程序都有统一的运算模式:输入数据、处理数据和输出数据。这种朴素的运算模式形成了基本的程序编写方法:IPO(Input,Process,Output)方法。IPO 不仅是程序设计的基本方法,也是描述计算问题的方式。1.5.2 理解问题的计算部分 使用计算机解决问题的 6 个步骤:1.分析问题 2.划分边界 3.设计算法 4.编写程序 5.调试测试 6.升级维护 第 2 章 Python 程序解析 2.1 Python 程序语法元素分析 Python程序包括格式框架、注释、变量、表达式、分支语句、循环语句、函数等语法元素。程序的格式框架 Py
6、thon 语言采用严格的“缩进”来表明程序的格式框架,缩进表达了所属关系 在代码编写中缩进可通过 Tab 键实现,也可用多个空格实现,建议采用 4 个空格方式书写代码 注释 实用文档.注释是辅助性文字,不被执行 单行注释:以#开头#这是注释 多行注释:以(3 个单引号)开头和结尾 这是注释 这也是注释 这还是注释 命名 命名是为变量关联标识符的过程,用于确保程序元素的唯一性 标识符由字母、数字、下划线(和汉字)等字符及其组合构成 标识符的首字符不能是数字,且中间不能出现空格 标识符对大小写敏感 保留字 保留字(Keyword)也被称为关键字,是被编程语言内部定义并保留使用的标识符 Python
7、 的标准库提供了一个 keyword 模块,可以输出当前版本的所有关键字:import keyword ls=keyword.kwlist ls 实用文档.len(ls)33 Python 3 有 33 个保留字 1.True 2.False 3.None 4.and 5.as 6.assert 7.break 8.class 9.continue 10.def 11.del 12.elif 13.else 14.except 15.finally 16.for 17.from 18.global 19.if 20.import 21.in 22.is 23.lambda 24.nonloca
8、l 实用文档.25.not 26.or 27.pass 28.raise 29.return 30.try 31.while 32.with 33.yield 字符串 字符串(string)类型在程序中表示文本 字符串是字符的序列,可以按照单个字符或字符片段进行索引 字符串包括两种序号体系:正向递增序号、反向递减序号 正向递增序号:0L-1 反向递减序号:-L-1 区间访问方式:N:M(不包含 M),可以混合使用正向递增序号和反向递减序号 字符串比较本质上是字符串对应 Unicode 编码的比较 赋值语句 Python 语言中,“=”表示“赋值”,将右侧的计算结果赋给左侧变量 同步赋值语句:可
9、同时给多个变量赋值,=,分支语句 分支语句的作用是根据判断条件选择程序执行路径 实用文档.if:elif:else:循环语句 循环语句的作用是根据判断条件确定一段程序是否再执行一次或多次 while():for i in range():input()函数 使用 input()函数从控制台获得用户输入 input()函数以字符串类型返回结果 =input(提示性文字)input(请输入:)eval()函数 eval()函数的作用是间输入的字符串变成 Python 语句并执行 x=eval(input(请输入:)实用文档.Python 语法允许在表达式内部标记之间增加空格,适当增加空格有助于提高
10、代码可读性。但应注意,不能改变与缩进相关的空格数量、不能再变量名等命名中间增加空格。print()函数 print()函数可以输出字符信息,也可以用字符的形式输出变量 输出字符信息时,可以直接将待输出内容传递给 print()函数 输出变量值时,print()函数用槽格式和过 format()方法将变量和字符串结合到一起输出 函数 函数可以理解为对一组表达特定功能表达式的封装,将特定功能代码编写在一个函数里,使程序模块化更好,便于阅读和复用 可通过保留字 def 自定义函数 2.2 对象(库)的调用 .()表示调用一个对象的方法(),或调用一个函数库中的函数()面向对象编程是一种基于对象的编程
11、范式。对象是事物的一种抽象,是一个实体,包含属性和方法两部分。属性是对象中的变量,方法是对象能完成的操作。通过保留字 import 引用函数库 1.import:程序调用库中所有函数,使用库中函数格式如下.()import turtle turtle.fd(100)#控制画笔向当前行进方向前进 100 实用文档.2.from import:from import from import*,“*”是通配符,表示所有函数 调用库中函数不再需要使用库名,格式如下()from turtle import*fd(100)2.3 turtle 库语法元素分析 tuetle 库是一个图形绘制函数图 绘图坐标
12、体系 tuetle 库绘制图形的基本框架是一个海龟在坐标系中爬行(前进、后退、左转、右转),其轨迹形成了绘制图形。初始位置位于坐标(0,0),行进方向为水平右方。使用 turtle.setup()函数设置主窗体的大小和位置。turtle.setup(width,height,startx,stary)width,height 分别表示窗口宽度和高度,值是整数表示像素值,值时小数表示与屏幕的比例 startx,stary 分别表示窗口左侧和顶部与屏幕左侧和顶部的像素距离,如果值是none,窗口位于屏幕水平/垂直中央 turtle.setup(0.8,0.8)画笔控制函数 实用文档.turtle.
13、penup():抬起画笔,之后移动画笔不绘制形状 别名:turtle.pd()、turtle.down()turtle.pensize(width):设置画笔宽度,width 无参数或为 None 时返回当前画笔宽度 别名:turtle.width()turtle.pencolor():设置画笔颜色,无参数输入时返回当前画笔颜色。(colorstring)参数表示颜色的字符串;(r,g,b)参数表示颜色对应的 RGB 值 颜色 颜色字符串 GRB 十六进制 黑色 black 0,0,0#FFFFFF 白色 white 255,255,255#000000 灰色 grey 190,190,190
14、#BEBEBE 形状绘制函数 turtle.fd(distance):控制画笔向当前行进方向前进 distance,值为负数表示向相反方向前进 别名:turtle.forward(distance)turtle.seth(to_angle):控制画笔绘制方向,(to_angle)参数是绝对方向角度值(turtle 库的坐标体系以正东方向为绝对 0 度、正北方向为绝对 90 度)turtle.circle(radius,extent=None):根据半径 radius 绘制 extent 角度的弧形 radius 值为正时,半径在画笔左侧,值为负时,半径在画笔右侧;extent 为正时,画笔逆时
15、针前进,extent 为负时,画笔顺时针倒退,extent 不设置参数或参数为 None 时,绘制整圆。实用文档.第二部分 深入 Python 语言 第 3 章 基本数据类型 3.1 数字类型 Python语言提供整数、浮点数、复数 3 种数字类型 整数类型 整数类型共有 4 种进制表示:十进制、二进制、八进制和十六进制 默认情况整数采用十进制,其他进制需要增加引导符号 进制种类 引导符号 描述 十进制 无 默认情况 二进制 0b或 0B 由字符 0 和 1 组成 八进制 0o或 0O 由字符 0 到 7 组成 十六进制 0 x 或 0X 由字符 0 到 9、a到 f、A到 F组成 浮点数类型
16、 浮点数类型与数学中实数的概念一致,表示带有小数的数值 Python 语言要求所有浮点数必须带有小数部分(可以是 0),一区分浮点数和证书类型 浮点数有 2 中表示方法:十进制表示和科学计数法表示 科学计数法使用字母 e 或 E 作为幂的符号,以 10 为基数,含义如下:实用文档.e=a*10b2 由于计算机内部采用二进制运算,浮点数进行超过15 位数字计算会产生误差 使用整数表达浮点数的方法是高精确度运算的基本方法之一。对于高精度科学计算外的绝大部分运算而言,浮点数类型已足够可靠,一般认为浮点数类型没有范围限制,运算结果准确 复数类型 复数类型表示数学中的复数 复数可以看作是二元有序实数对(
17、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).imag 3.2 数字类型的操作 Python 解释器为数字类型提供数值运算操作符、数值运算函数、类型转换函数等操作方法 内置的数值运算操作符(共 9 个)实用文档.操作符 描述 x+y x 与 y之和 x-y x 与
18、 y之差 x*y x 与 y之积 x/y x 与 y之商 x/y x 与 y之整数商,即不大于 x 与 y之商的最大整数 x%y x 与 y之商的余数,也称为模运算-x x 的负值+x x 本身 x*y x 的 y次幂,即 xy 操作符运算的结果可能会改变数字类型,3 种数字类型之间存在一种逐渐扩展的关系:整数浮点数复数 上述 9 个二元数学操作符都有与之对应的增强赋值操作符 x+=y 等价于 x=x+y 模运算(%)在编程中主要应用于具有周期规律的场景 内置的数值运算函数(共 6 个)实用文档.函数 描述 abs(x)x 的绝对值 divmod(x,y)(x/y,x%y),输出为二元组形式(
19、也称为元组类型)pow(x,y,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 可
20、以是整数或浮点数但不能为字符串 int()函数将浮点数类型转换为整数时,小数部分会直接被舍弃 复数不能直接转换为其他数字类型,可通过.real 和.imag 将复数的实部和虚部分别转换 实用文档.3.3 字符串类型及其操作 字符串类型的表示 字符串是字符的序列表示 单引号字符串:单引号表示可以使用双引号作为字符串的一部分 双引号字符串:双引号表示可以使用单引号作为字符串的一部分 三引号字符串:三引号表示可以使用双引号、单引号作为字符串的一部分 也可以换行 Python 字符串提供区间访问方式,采用N:M格式。表示从字符串中从 N 到 M(不包含 M)的字符串,可以混合使用正向递增序号和反向递减
21、序号 反斜杠字符()在字符串中表示转义 1.n 表示换行 2.表示反斜杠 3.表示单引号 4.表示双引号 5.t 表示制表符(Tab)基本的字符串操作符(共 5 个)操作符 描述 x+y 连接两个字符串 x 与 y x*n 或 n*x 复制 n 次字符串 x x in s 如果 x 是 s 的子字符串,返回 Ture,否则返回 False 实用文档.操作符 描述 stri 索引,返回第 i 个字符 strN:M 切片,返回索引第 N到第 M 个字符 内置的字符串处理函数(共 6 个)函数 描述 len(x)返回字符串 x 的长度,也可返回其他组合数据类型元素个数 str(x)返回任意类型 x
22、所对应的字符串形式 chr(x)返回 Unicode编码 x 对应的单字符 ord(x)返回单字符表示的 Unicode编码 hex(x)返回整数 x 对应十六进制数的小写形式字符串 oct(x)返回整数 x 对应八进制数的小写形式字符串 内置的字符串处理方法(共 43 个,常用 16 个)在 Python 解释器内部,所有数据类型都采用面向对象的方式实现,封装为一个类 字符串是一个类,具有类似.()形式的字符串处理函数,称为方法 方法 描述 实用文档.方法 描述 str.lower()返回字符串 str的副本,全部字符小写 str.upper()返回字符串 str的副本,全部字符大写 str
23、.islower()当 str所有字符都是小写时,返回 Ture,否则返回False str.isprintable()当 str所有字符都是可打印的,返回Ture,否则返回False str.isnumeric()当 str 所有字符都是数字时,返回 Ture,否则返回False str.isspace()当 str所有字符都是空格,返回 Ture,否则返回 Flase str.endswith(suffix,start,end)strstart:end以 suffix 结尾返回 Ture,否则返回 Flase str.srartswith(prefix,start,end)strstart
24、:end以 prefix 开始返回 Ture,否则返回 Flase str.split(sep=None,maxsplit=-1)返回一个列表,由 str根据 sep被分割的部分构成 str.count(sub,start,end 返回 strstart:end中 sub子串出现的次数 str.replace(old,new,count)返回字符串 str 的副本,所有 old 子串被替换为 new,如果 count 给出,则前 count 次 old 出现被替换 str.center(width,fillchar)字符串居中函数 实用文档.方法 描述 str.strip(chars)返回字符
25、串 str的副本,在其左侧和右侧去掉 chars中列出的字符 str.zfill(width)返回字符串 str 副本,长度为 width。不足部分在其左侧添加 0 str.format()返回字符串 str 的一种排版格式 str.join(iterable)返回一个新字符串,由组合数据类型 iterable 变量的每个元素组成,元素间用 str 分隔 3.4 字符串类型的格式化 字符串通过 format()方法进行格式化处理 字符串格式化用于解决字符串和变量同时输出时的格式安排 format()方法的基本使用 字符串 format()方法的基本使用格式:.format()模板字符串由一系列
26、槽组成,用来控制修改字符串中嵌入值出现的位置(槽用表示,如果中没有序号,则按照出现顺序替换)如需输入,采用表示;表示 圆周率12是0.format(无理数,3.1415926,)format()方法的格式控制 format()方法模板字符串的槽除了包括参数序号,还可包括格式控制信息。槽内部样式:实用文档.格式控制标记用于控制参数显示时的格式:引导符号 用于填充的单个字符 右对齐、居中对齐 槽的设定输出宽度 数字的千位分隔符 适用于整数和浮点数 浮点数小数部分的精度或字符串的最大输出长度 整数类型b,c,d,o,x,X;浮点数类型 e,E,f,%指宽度内除了参数外的字符采用什么方式表示,默认为空
27、 格 指参数在宽度内输出时的对齐方式 指当前槽的设定输出字符宽度,若实际参数长度比设定值大,则使用参数实际长度 用于显示数字类型的千分位分隔符 对于浮点数,表示小数部分输出的有效位数;对于字符串,表示输出的最大长度 表示输出整数好浮点数类型的格式规划。对于整数类型,1.b:整数的二进制;2.c:整数对应的 Unicode 字符;3.d:整数的十进制;4.o:整数的八进制 5.x:整数的小写十六进制 6.X:整数的大写十六进制 对于浮点数类型,7.e:浮点数对应的小写字母 e 的指数形式 8.E:浮点数对应的大写字母 E 的指数形式 实用文档.9.f:浮点数的标准浮点形式 10.%:浮点数的百分
28、形式 第 4 章 程序的控制结构 4.1 程序的基本结构 程序流程图 起止框表示一个程序的开始和结束 判断框判断一个条件是否成立,并根据判断结果不同选择不同的执行路径 处理框表示一组处理过程 输入/输出框表示数据输入或结果输出 注释框增加程序的解释 流向线以带箭头的直线或曲线形式指示程序的执行路径 连接点将多个流程图连接到一起 程序的基本结构 程序有 3 种基本结构组成:顺序结构、分支结构和循环结构 顺序结构:程序按照线性顺序依次执行 分支结构:程序根据条件判断结果而选择不同向前执行路径的一种运行方式(分支结构包括单分支结构和二分支结构;p97)循环结构:程序根据条件判断结果向后反复执行(根据
29、触发条件不同,循环结构包括条件循环和遍历循环)4.2 程序的分支结构 单分支机构:if 语句 if 语句语法格式:实用文档.if:语句块是 if 条件满足后执行的一个或多个语句序列 语句块中语句通过与 if 所在行形成缩进表达包含关系 if 语句首先评估条件的结果值,若为 Ture 则执行语句块中的语句序列;若为 False则跳过语句块中的语句 if 语句中条件部分可以使用任何能够产生 Ture 或 False 的语句或函数 形成判断条件最常见的方式是采用关系操作符 关系操作符 数学符号 操作符含义 大于=大于等于=等于!=不等于 Python 使用=表示赋值语句,使用=表示等于 二分支结构:
30、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 结构,执行后面的语句 如果没有任何条件成立,执行 else 下面的语句块
31、else 语句是可选的 4.3 程序的循环结构 遍历循环:for 语句 for 语句语法格式 for in:遍历循环可以理解为从遍历结构中中逐一提取元素,放在循环变量中,对于所提取的每个元素执行一次语句块 循环 N 次:for i in rang(N):遍历文件的每一行:for line in fi:遍历字符串 s 实用文档.for c in s:遍历列表 ls for item in ls:遍历循环的扩展模式 for in:else:当 for 循环正常执行后,程序会继续执行 else 语句 遍历循环:while 语句 while 语句语法格式 while:当条件判断为 Ture 时,循环体
32、重复执行语句块中的语句;当条件为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:b
33、reak BBTT break 语句与 continue 语句的区别是,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:prin
34、t(正常退出)PY 4.4 random 库的使用 random 库采用梅森旋转算法生成伪随机数序列,可用于除随机性要求更高的加解密算法外的大多数工程应用 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
35、之间以 step 为步数的随机整数 uniform(a,b)生成一个a,b之间的随机小数 choice(seq)从序列类型,例如列表中随机返回一个元素 shuffle(seq)将序列类型中的元素随机排列,返回打乱后的序列 sample(pok,k)从 pop 类型中随机选取 k个元素,以列表类型返回 生成随机数之前可通过 seed()函数指定随机数种子,随机数种子一般是一个整数,只要种子相同,每次生成的随机数序列也相同 4.5 程序的异常处理 Python通过 try、except 等保留字提供异常处理功能 异常处理:try-except 语句 Python 使用 try-except 语句实
36、现异常处理 实用文档.try:except:异常的高级用法 try-except 语句可以支持多个 except 语句 try:except:.except:except:异常语句还可以与 else 和 finally 保留字配合使用 try:except:实用文档.else:finally:第 5 章 函数和代码复用 5.1 函数的基本使用 函数的定义 函数是一段具有特定功能的、可重用的语句组 使用函数主要有两个目的:降低编程难度和代码重用 Python 使用 def 保留字定义一个函数 def():return 函数名可以是任何有效的 Python 标识符 参数列表是调用该函数是传递给它的
37、值,可以有零个(保留圆括号)、一个或多个(用逗号分隔)函数体是函数每次被调用是执行的代码 当需要返回值时使用保留字 return 和返回值刘表,否则函数可以没有 return 语句,在函数体结束时将控制权返回给调用者 函数调用和执行的一般形式 实用文档.()函数的调用过程 1.调用程序在调用处暂停执行 2.在调用时将实参复制给形参 3.执行函数体语句 4.函数调用结束给出返回值,程序回到调用前的暂停处继续执行 lambda 函数 lambda 函数又称匿名函数,将函数名作为函数结果返回=lambda:lambda 函数与正常函数一样,等价于下面表达式:def():return lambda 函
38、数用于定义简单的、能够在一行内表示的函数,返回一个函数类型 f=lambda q,w,e,r:q+w+e+r f(1,2,3,4)10 lambda 函数用于需要函数对象的场景 5.2 函数的参数传递 实用文档.函数可定义可选参数,使用参数的位置或名称传递参数值,根据函数中变量的不同作用域有不同的函数返回值方式 可选参数和可变数量参数 函数定义时部分参数可直接为存在默认值的参数指定默认值,当函数被调用时如果没有传入对应的参数值则使用函数定义时的的默认值替代 默认参数必须指向不变对象 函数调用时需要按顺序输入参数,可选参数必须定义在非可选参数后 dfe r(str,times=2):print(
39、str*times)r(T)TT r(T)TTTT 函数定义时可设计可变数量参数,通过在参数前加星号(*)实现 带有星号的可变参数只能出现在参数列表最后,调用时这些参数被单指元组类型传递到函数中 def vfunc(a,*b)print(type(b)for n in b:a+=n return a vfunc(1,2,3,4,5)实用文档.15#1+2=3;3+3=6;6+4=10;10+5=15 参数的位置和名称传递 函数定义时实参默认采用按照位置顺序的方式传递给函数,这种方式在参数很多的情况下可读性较差 Python 提供了按照形参名称输入实参的方式,调用函数时指定参数名称,参数之间的顺
40、序可任意调整 函数的返回值 return 语句用来退出函数并将程序返回到函数被调用的位置继续执行 return 语句可同时将 0 个、1 个或多个函数运算后的结果返回给函数被调用的位置 函数可以没有 return,此时函数不返回值 函数也可以用 return 返回多个值,多个值以元组类型保存 def func(a,b):return b,a s=func(t,2)print(s,type(s)(2,t)5.4 datetime 库的使用 Python时间处理的标准函数库 datetime 提供里一批显示日期和时间的格式化方法。datetime 库概述 datetime 库可以从系统中获得时间,
41、并以用户选择的格式输出 实用文档.datetime 库以格林威治时间为基础,每天由 3600*24 秒精准定义 datetime 库以类的方式提供多种日期和时间 1.datetime.date:日期表示类,坑人表示年、月、日等。2.datetime.time:时间表示类,可表示小时、分钟、秒、毫秒等。3.datetime.datetime:日期和时间表示类,功能覆盖 date 和 time 类。4.datetime.timedelta:与时间间隔有关的类。5.datetime.tzinfo:与时区有关的信息表示类。datetime 库解析(datetime 类)datetime.datetim
42、e 类的使用方式是首先创建一个 datetime 对象,然后通过对象的方法和属性显示时间 创建 datetime 对象的 3 种方法:1.datetime.now():返回一个 datetime 类型,表示当前日期和时间,精确到毫秒 from datetime import datetime now=datetime.now()now datetime.datetime(2018,5,13,16,49,38,627464)2.datetime.utcnow():返回一个 datetime 类型,表示当前日期和时间的 UTC(世界标准时间)表示,精确到毫秒 from datetime impor
43、t datetime utcnow=datetime.now()utcnow datetime.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)some datetime.datetime(2018,5,13,17,0)-创建 datetime 对象后,可利用该对象的属性显示时间(以上述“some”为例)datetime 类的常用属性
44、属性 描述 some.min 固定返回 datetime的最小时间对象,datetime(1,1,1,0,0)some.max 固定返回 datetime的最大时间对象,datetime(9999,12,31,23,59,59,999999)some.year 返回 some包含的年份 some.month 返回 some包含的月份 some.day 返回 some 包含的日期 some.hour 返回 some 包含的小时 some.minute 返回 some 包含的分钟 实用文档.属性 描述 some.second 返回 some包含的秒钟 some.microsecond 返回 som
45、e包含的毫秒 datetime 类的常用时间格式化方法 属性 描述 some.isofomat()采用 ISO8601标准显示时间 some.isoweekday()根据日期计算星期 some.strftime()根据格式化字符串 format 进行格式显示的方法 strftime()方法用于输出特定格式时间 格式化字符串 对象 取值范围%Y 年 00019999%m 月 112%B 月名 JanuaryDecember%b 月名缩写 JanDec 实用文档.格式化字符串 对象 取值范围%d 日期 0131%A 星期 MondaySunday%a 星期缩写 MonSum%H 小时(24h制)0
46、023%I 小时(12h制)0112%p 上、下午 AM/PM%M 分钟 0059%S 秒 0059 some=datetime(2018,5,13,17,0,0,0)some.strftime(%Y 年%m 月%d 日,%H 时%M 分%S 秒)2018 年 05 月 13 日,17 时 00 分 00 秒 print(今天是0:%Y年0:%m月0:%d日.format(some)今天是 2018 年 05 月 13 日 5.5 代码复用和模块化设计 实用文档.当代编程语言从代码层面采用函数和对象两种抽象方式,分别对应面向过程和面向对象两种编程思想 函数是程序的一种基本抽象方式,它将一系列代
47、码组织起来通过命名提供其他程序使用,任何其他代码只有输入参数即可调用函数,更新函数功能时,所有被调用处的功能都被更新。对象是程序的一中高级抽象方式,它将程序代码组织为更高级的类。对象包括表征对象特征的属性和代表对象操作的方法。模块化设计值通过函数或对象的封装功能将程序划分成主程序、子程序和子程序间关系的表达。模块化设计的两个基本要求:1.紧耦合:尽可能合理划分功能块,功能块内部耦合紧密 2.松耦合:模块间关系尽可能简单,功能块之间耦合度低 5.6 函数的递归 递归的定义:函数定义中调用函数自身的方式称为递归 数学经典递归案例阶乘 n!=n(n-1)(n-2).(1)n!=1(n=0)n!=n(
48、n-1)!(otherwise)递归的两个关键特征 1.存在一个或多个基例,基例不需要再次递归,是确定的表达式 2.所有递归链要以一个或多个基例结尾 递归的使用方法 def fact(n):实用文档.if n=0:return 1 else:return n*fact(n-1)num=eval(input(请输入一个整数:)print(fact(abs(int(num)使用递归一定要注意基例的构建,否则递归无法返回 5.7 科赫曲线绘制 科赫曲线属于分形几何分支,它的绘制过程体现了递归思 想 from turtle import*def koch(size,n):if n=0:fd(size)
49、else:for angle in 0,60,-120,60:left(angle)koch(size/3,n-1)#递归 def main(size,level):setup(600,600)#设置主窗体大小 speed(0)#设置画笔速度,(110)hideturtle()#隐藏 turtle 箭头 penup()实用文档.goto(-150,50)pendown()pensize(1)#设置画笔尺寸 koch(size,level)right(120)koch(size,level)right(120)koch(size,level)main(300,3)5.8 Python 内置函数
50、Python 提供 68 个内置函数 abs()all()any()asci()bin()bool()chr()complex()dict()divmod()eval()float()hash()hex()实用文档.id()input()int()len()list()max()min()oct()open()ord()pow()print()range()reversed()round()set()sorted()str()tuple()type()zip()bytes()delattr()bytearray()callable()classmethod()实用文档.compile()dir