2026/4/17 2:25:37
网站建设
项目流程
建设旅游电子商务网站的目的,郑州网站建设的软件,html做一个登录注册页面,网站占有率内容提要概述函数模块综合举例一、概述Python的程序由包、模块和函数组成。 函数是一段可重用的有名称的代码。通过输入的参数值#xff0c;返回需要的结果#xff0c;并可存储在文件中供以后使用。几乎任何Python代码都可放在函数中。Python为函数提供了强大支持。 模块是处…内容提要概述函数模块综合举例一、概述Python的程序由包、模块和函数组成。 函数是一段可重用的有名称的代码。通过输入的参数值返回需要的结果并可存储在文件中供以后使用。几乎任何Python代码都可放在函数中。Python为函数提供了强大支持。 模块是处理某一类问题的集合模块由函数和类组成。模块和常规Python程序之间的唯一区别是用途不同模块用于编写其他程序。因此模块通常没有main函数。 包是一个完成特定任务的工具箱Python提供了许多有用的工具包如字符串处理、图形用户接口、Web应用、图像处理等。使用自带的工具包可以提高程序开发效率、减少编程复杂度达到代码重用的效果。Python的程序结构说明Python自带的工具包和模块安装在其安装目录的Lib子目录中。例如Lib目录中的xml文件夹。xml文件夹就是一个包该包用于完成XML的应用开发xml包中包含四个子包dom、sax、etree和parsers。文件__init__.py是xml包的注册文件若无此文件Python将不能识别xml包。注意包必须至少含有一个__init__.py文件。 __init__.py文件的内容可以为空它用于标识当前文件夹是一个包。二、函数1、函数的定义及调用格式 def 函数名(形参表): 函数体语句序列 [return 表达式] #可选项即有的函数可以没有返回值。函数调用 函数名(实参表) 说明 函数必须先定义后使用 函数名与变量名的命名规则相同只能包含字母、数字和下划线_且不能以数字打头。例5-1定义计算圆面积的函数2、函数的参数在C、C中参数的传递有值传递和引用传递两种方式。Python中任何东西都是对象所以参数只支持引用传递的方式。Python通过名称绑定的机制把实际参数的值和形式参数的名称绑定在一起即把形式参数传递到函数所在的局部命名空间中形式参数和实际参数指向内存中同一个存储空间。1按引用传递参数向函数传递参数时Python采用按引用传递的方式。这意味着当传递参数时函数将使用新变量名来引用原始值。例5-2求任意两个数的和。内存状态2默认值函数的参数支持默认值。当某个参数没有传递实际的值时函数将使用默认参数计算。 带默认值的参数不能位于没有默认值的参数前面。例5-3默认值参数示例。3关键字参数关键字参数有两大好处 清晰地指出了参数值有助于提高程序的可读性 关键字参数的顺序无关紧要。 调用使用关键字参数的函数时以paramvalue的方式传递参数例5-4关键字参数示例3、函数的嵌套C、C都支持函数的嵌套调用Python不仅支持函数的嵌套调用还支持函数的嵌套定义。 当然尽量不要在函数内部定义函数这种方式不便于程序维护容易造成逻辑上的混乱且嵌套定义的函数层次越多程序维护的代价就越大。例5-5分别使用函数的嵌套调用、函数的嵌套定义以及函数嵌套定义时直接引用外部函数的变量等三种方式计算表达式(xy)*(m-n)的值。嵌套调用函数嵌套定义函数函数嵌套定义内部函数直接引用外部函数的变量4、递归函数1递归的概念递归函数可以在函数主体内直接或间接地调用自己即函数的嵌套是函数本身。 递归是一种程序设计方法使用递归可以减少重复的代码使程序变得简洁。 递归的过程分为两个阶段递推和回归。递归函数的原理 第一阶段递归函数在内部调用自己。每一次函数调用又重新开始执行此函数的代码直到某一级递归程序结束。 第二阶段递归函数从后往前返回。递归函数从最后一级开始返回一直返回到第一次调用的函数体内。即递归函数逐级调用完毕后再按相反的顺序逐级返回。2递归的实现一个问题能否用递归实现看其是否具有下面的特点 需有完成任务的递推公式。 结束递归的条件。 编写递归函数时程序中必须有相应的语句 一个递归调用语句。 测试结束语句。先测试后递归调用。例5-6用递归方法求n!源程序及执行结果例5-7编程求出Fibonacci数列的第n项。源程序及执行结果3递归的评价与消除递归递归程序虽然易读、易编但需要占用额外的内存空间并且执行速度也受影响。 是否利用递归编程要看实际问题如果要节约内存就用循环语句实现。若对内存要求并不高可以用递归编程。 如果不用递归程序很难实现则只能选择递归算法。5、lambda函数Lambda函数用于创建一个匿名函数函数名未和标识符进行绑定。 使用lambda函数可以返回一些简单的运算结果。格式 lambda 变量1,变量2…:表达式 功能通常lambda赋值给一个变量变量即可作为函数使用也可以把lambda直接作为函数使用。例5-8用lambda函数改造例5-5-3。例5-9使用lambda定义求绝对值的匿名函数。6、Generator函数Generator函数的作用是一次产生一个数据项并把数据项输出。格式 def 函数名(参数列表): … yield 表达式说明Generator函数的定义与普通函数的区别只是在函数体内使用yield生成数据项。 Generator函数可以被for循环中遍历且可以通过__next__()方法Python 2是next方法获得yield生成的数据项。例5-10用三种方法求斐波那契Fibonacci数列的前N项说明结果没有问题但直接在 fab 函数中用 print 打印数字会导致该函数可复用性较差因为 fab 函数返回 None其他函数无法获得该函数生成的数列。 要提高 fab 函数的可复用性最好不要直接打印出数列而是返回一个 listPython中的数据结构之一是序列之一由一组元素组成值可改变。后续详细介绍方法二定义一个函数返回一个列表列表中包含了斐波那契数列前 N 项方法三使用yield说明方法三与方法一相比仅仅把 print b 改为了 yield b就在保持简洁性的同时获得了 iterable 的效果。 也可以手动调用 fab(5) 的 __next__() 方法这样可以更清楚地看到 fab 的执行流程。 当函数执行结束时generator 自动抛出 StopIteration 异常表示迭代完成。在 for 循环里无需处理 StopIteration 异常循环会正常结束。三、模块模块实际上是将一组函数放在一起共享公共的主题 将这些函数存储于一个.py文件中 使用import命令导入。1、模块的创建及导入创建模块即创建一个.py文件在其中包含用于完成任务的变量、类和函数不包括main函数。 模块使用之前要导入该模块导入方法之前已做过介绍。例5-11创建模块用于在屏幕上打印各种形状。定义的模块shapes及使用模块的源程序执行结果例5-12创建一个求圆面积、圆周长、圆表面积和圆体积的模块调用方式一调用方式二2、模块的属性3、模块的内置函数Python提供了一个内联模块buildin。该模块定义了一些常用函数利用这些函数可以实现数据类型的转换、数据的计算、序列的处理等功能。1filter()声明 class filter(object) filter(function or None, iterable)--filter object功能filter()可以对某个序列做过滤处理根据自定义函数返回的结果是否为真来过滤并一次性返回处理结果。返回结果是filter对象。例5-13filter()函数应用2reduce()声明 reduce(func,squence[,initial])-value功能对序列中的元素进行连续操作。例如可对某个序列中的元素进行累加、累乘和阶乘等操作。 说明在Python 2中reduce存在于全局空间中可直接调用。而在Python 3中将其移到了functools模块中所以使用之前要先引入。例5-14reduce()函数应用3map()声明 class map(object) map(func, iterables)--map object功能对多个序列的每个元素都执行相同的操作并返回一个map对象。例5-15map()函数应用。求列表中数字的幂运算。常用内置模块函数一常用内置模块函数二4、自定义包例一个包与模块的树形关系包pack的初始化程序及myModule模块包pack2的初始化程序及myModule2模块包parent中的main模块及执行结果4、第三方模块的导入1单文件模块 直接把文件拷贝到 python的安装目录的Lib子目录下。2多文件模块带setup.py python setup.py install例5-16导入第三方模块requestsrequests简介requests是python的一个HTTP客户端库。支持 HTTP 连接保持和连接池支持使用 cookie 保持会话支持文件上传支持自动确定响应内容的编码支持国际化的 URL 和 POST 数据自动编码。步骤1去第三方库的网站 https://pypi.python.org 下载安装包解压在python的安装目录。 注意第三方库的文件夹的位置以及setup.py的位置。本例在Python 2.7下安装的。步骤2步骤3安装完成步骤4最后进入命令行import库名称观察第三方库是否安装成功。四、综合举例进一步完善将求负数的奇数次根的情况考虑在内进一步完善将分数的情况也考虑在内进一步完善增加一个说明2、递归经典程序—汉诺Hanoi塔问题这是一个古典的数学问题是一个只能用递归方法解决的问题。 问题源于印度一个古老传说古代有一个梵塔塔内有三个柱子A、B、C开始时A柱上有64个盘子盘子大小不等大的在下小的在上。想将这64个盘子从A柱移到C柱但每次只允许移动一个盘子且在移动过程中都始终保持大盘在下小盘在上。在移动过程中可以利用B柱。说明上述算法中的第1步和第3步都是将n-1个盘子从一个座移到另一个座只是座的名称不同而已。为使之一般化可将第1步和第3步表示为 将“one”座上n-1个盘移到“two”座借助“three”座。只是在第1步和第3步中one、two、three和A、B、C的对应关系不同。 对第1步one-A、two-B、three-C 对第3步one-B、two-C、three-A。程序及执行结果