当前位置: 首页 > news >正文

网站开发的交付文档郑州网站制作天强科技

网站开发的交付文档,郑州网站制作天强科技,用dw制作个人网站,中土集团北方建设有限公司网站“探索 Python” 这一系列的前几篇文章已为 Python 编程新手介绍了几方面的主题#xff0c;包括变量、容器对象和复合语句。本文以这些概念为基础#xff0c;构造一个完整的 Python 程序。引入了 Python 函数和模块#xff0c;并展示了构建一个 Python 程序、将其存储在文件…           “探索 Python” 这一系列的前几篇文章已为 Python 编程新手介绍了几方面的主题包括变量、容器对象和复合语句。本文以这些概念为基础构造一个完整的 Python 程序。引入了 Python 函数和模块并展示了构建一个 Python 程序、将其存储在文件中以及通过命令行运行该程序的方法。 返璞归真 许多流行的玩具都以这样一个概念为基础简单的积木。这些简单的积木可通过多种方式组合在一起构造出全新的作品 —— 有时甚至完全令人出乎意料。这一概念同样适用于现实生活中的建筑领域将基本原材料组合在一起形成有用的建筑物。平凡无奇的材料、技术和工具简化了新建筑物的建造过程同样也简化了对新踏入此领域的人员的培训。 相同的基本概念也适用于计算机程序开发技术包括以 Python 编程语言编写的程序。本文介绍了使用 Python 创建基本构件 (building block) 的方法可用于解决更为复杂的问题。这些基本构件可能小而简单也可能庞大而复杂。无论采用哪种形式我们这场游戏的目的就是定义基本构件然后使用它们来创建专属于您的杰作。 函数封装逻辑 在本系列的前几篇文章中您通常不得不重复输入所有代码即便它与上一行代码完全相同。此要求的惟一特例就是变量的使用一旦初始化了变量的内容之后就可以随时重用。显而易见这一用法的普及对我们大有好处。 描述杰出程序员的最流行的箴言之一就是他们很懒惰。这并不表示杰出的程序员不努力工作 —— 而是说他们喜欢灵活的工作方法除非绝对必要否则从不反复做任何相同的事情。这也就意味着在您需要编写代码之前首先考虑如何实现重用。Python 中有多种可实现重用的途径但最简单的技术莫过于使用函数也称为方法 或子例程。 与绝大多数现代编程语言类似Python 支持使用方法将一组语句封装在一起从而可在必要时重复使用。清单 1 给出了一段简单的伪代码为您展示如何在 Python 中编写方法。 清单 1. 定义函数的伪代码 def myFunction(optional input data):initialize any local dataactual statements that do the workoptionally return any results 如您所见在 Python 中函数的基本组成部分是包装器代码指明将被重用的一系列 Python 语句。函数可接受输入参数输入参数在紧接着函数名在本例中为 myFunction之后的圆括号内提供。函数还可返回值更为正式的说法是对象包括像 tuple 这样的 Python 容器。 在真正着手构建函数之前让我们先来看看关于伪代码的一些简单却重要的要点 请注意函数名中所用的字符大小写大多数字符都是小写的但在使用多个单词连接成一个函数名时后接的各单词首字母应大写例如myFunction 中的 F。这就是所谓的驼峰式大小写风格 (camel casing)是 Python 和其他编程语言中广泛采用的一种技术可使函数的名称更易阅读。 函数定义中的程序语句采用了缩进式排版函数体由 Python 语句块构成它们也必须像循环或条件语句那样缩进。 函数定义的第一行也称为方法签名 (method signature)以 def 开头def 是 define 这个单词的缩写。 方法签名以冒号结尾表示下面的代码行是函数体。 至此您或许已认可了使用方法的好处。那么让我们投入进去开始编写函数吧。“Discover Python, Part 6: Programming in Python, For the fun of it” 中使用了一个 for 循环来创建乘法表。清单 2 展示了同样的概念但本例中创建的是一个函数用于封装乘法表计算背后的逻辑。 清单 2. 第一个函数 def timesTable(): ...   for row in range(1, 6): ...     for col in range(1, 6): ...       print %3d % (row * col), ...     print ...timesTable()1  2  3  4  52  4  6  8  103  6  9  12  154  8  12  16  205  10  15  20  25t timesTabletype(t) type functiont function timesTable at 0x64c30t()1  2  3  4  52  4  6  8  103  6  9  12  154  8  12  16  205  10  15  20  25 timesTable 函数定义起来非常简单它不接受任何输入参数也不返回任何结果。函数体几乎与 “Discover Python, Part 6” 中的语句完全相同但该文章中的乘法表为从 1 到 10。为了调用 方法并使其发挥作用只需输入函数名后接圆括号即可。本例中还输出了乘法表。 在 Python 中函数是一类对象与整型变量和容器对象相同。因而您可以将函数指派给一个变量切记在 Python 中变量是动态类型化的。在清单 2 中我们将 timesTable 函数指派给变量 t。接下来的两行代码表示变量 t 确实指向函数。最后我们使用变量 t 调用 timesTable 函数。 函数动态更改逻辑 清单 2 中的 timesTable 函数不复杂但也不是特别有用。更有用的示例允许您指定用于生成乘法表的行数和列数 —— 换言之允许您在调用函数时动态地更改函数的操作方式。在函数定义中使用两个输入参数即可实现这一功能如清单 3 所示。 清单 3. 更好的乘法表函数 def timesTable2(nrows5, ncols5): ...   for row in range(1, nrows 1): ...     for cols in range(1, ncols 1): ...       print %3d % (row * cols), ...     print ...timesTable2(4, 6)1  2  3  4  5  62  4  6  8  10  123  6  9  12  15  184  8  12  16  20  24timesTable2() 1  2  3  4  52  4  6  8  103  6  9  12  154  8  12  16  205  10  15  20  25timesTable2(ncols3)1  2  32  4  63  6  94  8  125  10  15 两个乘法表函数的定义非常相近但清单 3 中的函数有用得多通过清单 3 中的 3 次调用即可看出这一点。为函数添加此附加功能的方法非常简单提供名为 nrows 和 ncols 的两个输入参数允许在调用函数时更改乘法表的大小。这两个参数随后会被提供给生成乘法表的两个 for 循环。 关于 timesTable2 函数的另一要点就是两个输入参数有默认值。在函数签名中为参数提供默认值方法是在参数名后添加等号和值例如 nrows5。默认参数使程序获得了更高的灵活性因为在您调用函数时可以包含两个输入参数也可以仅包含一个输入参数甚至可以一个参数都不包含。但这种方法可能会导致某些问题。如果您在函数调用期间未指定全部参数则必须显式地写出您所指定的参数的名称以使 Python 解释器能够正确地调用函数。最后一个函数调用正体现了这一点它显式地调用了带有 ncols3 的 timesTable2 函数函数创建了一个 5 行默认值3 列所提供的值的乘法表。 函数返回数据 使用方法时人们最希望获得的结果并非总是乘法表。您可能希望完成一次计算并将计算结果值返回给调用代码。有时要实现这两个目的需要分别调用不返回任何数据的调用方法子例程和返回值的方法函数。但在 Python 中您无需担心这些语义问题因为通过使用 return 语句几乎可以相同的方式实现这两个目的参见清单 4。 清单 4. 在函数中返回一个值 def stats(data): ...   sum 0.0 ...   for value in data: ...     sum value ...   return (sum/len(data)) ...stats([1, 2, 3, 4, 5])   # Find the mean value from a list 3.0stats((1, 2, 3, 4, 5))   # Find the mean value from a tuple 3.0stats() Traceback (most recent call last):File stdin, line 1, in ? TypeError: stats() takes exactly 1 argument (0 given)stats(12345) Traceback (most recent call last):File stdin, line 1, in ?File stdin, line 4, in stats TypeError: unsupported operand type(s) for : float and str 这个简单的函数遍历 data假设 data 为一个容纳有数字数据的 Python 容器计算一组数据的平均值然后返回值。函数定义接受一个输入参数。平均值通过 return 语句传回。当您调用带有包含数字 1 到 5 的 list 或 tuple 的函数时返回值会显示在屏幕上。如果调用不带任何参数的函数、带非容器数据类型的函数或带内含非数字数据的容器的函数就会导致出错。在此类情况下抛出错误是很有意义的。更高级的处理方法应包含恰当的错误检查和处理以应对这些情况但这不在本文讨论范围内。 此示例已经非常有用但还可使它更强大如清单 5 所示。在 Python 中函数可返回任何有效的对象类型包括容器类型在内。因此您可以计算多个数量并轻松地将多个结果返回给调用语句。 清单 5. 返回复合值 def stats(data): ...   sum 0.0 ...   for value in data: ...     sum value ...   mean sum/len(data) ...   sum 0.0 ...   for value in data: ...     sum (value - mean)**2 ...   variance sum/(len(data) - 1) ...   return (mean, variance) ...stats([1, 2, 3, 4, 5]) (3.0, 2.5)(m, v) stats([1, 2, 3, 4, 5, 6, 7, 8, 9])print m, v 5.0 7.5 为了从一个函数中返回多个值要将其括在一个括号中并以逗号分隔 —— 换句话说创建并返回一个 tuple。新 stats 函数的函数体要略加修改以计算数字序列的样本方差。最后正如 stats 函数的两次调用所示tuple 值可作为一个 tuple 存取也可将其解包为各自的分量。 模块简化代码重用 至此您或许已相信了代码重用的价值。但即便是使用函数您依然需要在打算使用函数时重新输入函数体。例如当您打开一个新的 Python 解释器时必须键入之前所创建的所有函数。幸运的是您可以使用模块 将相关函数和其他 Python 对象封装在一起将其保存在一个文件中然后将这些已定义好的函数导入到新 Python 代码内包含于 Python 解释器之中。 为介绍在 Python 中使用模块的方法我们将重用清单 5 中的 stats 方法。有两个选择您可以从与本文相关的压缩文件中提取名为 test.py 的文件也可以在编辑器中键入函数然后将文件保存为 test.py。完成上一步后在您保存 test.py 的目录中启动一个新的 Python 解释器然后输入如清单 6 所示的语句。 清单 6. 使用模块 import testtest.stats([1, 2, 3, 4, 5, 6, 7, 8, 9]) (5.0, 7.5)from test import stats(m, v) stats([1, 2, 3, 4, 5, 6, 7, 8, 9])print m, v 5.0 7.5 第一行 import test 打开文件 test.py 并处理文件中的各条语句。这里仅定义了 stats 函数但若需要您还可定义更多的函数。调用 stats 函数时应以模块名 test 作为函数前缀。之所以使用这种复杂的名称是出于作用域 方面的考虑作用域表示一个程序内名称的有效范围。为告知 Python 您要调用的是哪个 stats 方法就必须提供完整的名称。这一点非常重要因为您可能拥有多个名称相同的对象。作用域规则可帮助 Python 判断您想使用的对象。 第三行 from test import stats 也打开了文件 test.py但它隐式地将 stats 方法置入当前文件的作用域内以使您能够直接调用 stats 函数无需使用模块名。明智地使用 from ... import ... 语法可使您的程序更简洁但过度的使用也会导致混淆甚至出现更糟糕的作用域冲突错误。不要滥用您的新武器 模块库 使用 Python 编程语言的一个主要好处就是大型的内置式标准库可作为 Python 模块访问。常用模块示例如下 math 包含有用的数学函数。 sys 包含用于与 Python 解释器交互的数据和方法。 array 包含数组数据类型和相关函数。 datetime 包含有用的日期和时间处理函数。 由于这些都是内置模块因此您可以通过帮助解释器来了解更多相关内容如清单 7 所示。 清单 7. 获得关于 math 模块的帮助信息 help(math) Traceback (most recent call last):File stdin, line 1, in ? NameError: name math is not definedimport math   # Need to import math module in order to use ithelp(math) Help on module math: NAMEmath FILE/System/Library/Frameworks/Python.framework/Versions/2.4/lib/ python2.4/lib-dynload/math.so DESCRIPTIONThis module is always available. It provides access to themathematical functions defined by the C standard. FUNCTIONSacos(...)acos(x)Return the arc cosine (measured in radians) of x.asin(...)asin(x)Return the arc sine (measured in radians) of x. math 模块的帮助输出展示了所支持的大量数学函数包括 sqrt 函数在内。您可以利用此函数将您的样本方差计算转换为样本标准差计算如清单 8 所示。 清单 8. 使用多个模块 from math import sqrtfrom test import stats(m, v) stats([1, 2, 3, 4, 5, 6, 7, 8, 9])print m, sqrt(v) 5.0 2.73861278753 如您所见您可以将多个模块导入到一个 Python 程序中。在大型、内置的模块库与更大量的公用库其中许多都是开放源码的的共同协助下您很快也会成为一名懒惰 —— 也就是杰出 —— 的程序员。 可执行文件 导入一个模块时Python 解释器会处理模块文件内的各行。实际上您可以调用 Python 解释器使其仅处理包含于一个文件中的一个 Python 程序。在基于 UNIX® 的操作系统中您可以轻松创建可执行的文件如清单 9 所示。 清单 9. 一个完整的 Python 程序 #!/usr/bin/env python def stats(data):sum 0.0for value in data:sum valuemean sum/len(data)sum 0for value in data:sum (value - mean)**2variance sum/(len(data) - 1)return(mean, variance) (m, v) stats([1, 2, 3, 4, 5, 6, 7, 8, 9]) print The mean and variance of the values from 1 to 9 inclusive are ,m, v 观察上例您应该会产生几分好感将 Python 程序置于文件内并使其运行是如此简单。本例与 test.py 文件中的代码之间惟一的差异就是包含了第一行。在基于 UNIX 的操作系统中本行会使 Python 解释器自动启动并在终止前处理文件中的语句。本示例中的其他行定义了 stats 函数、调用了函数并输出了结果。 要运行本文件中的语句您需要启动一个 Python 解释器并让它去读取和处理文件的内容。为实现这一目的您必须首先将清单 9 中的示例输入到一个名为 mystats.py 的文件中也可从与本文相关的压缩文件中提取文件。进入包含此文件的目录然后按清单 10 中所示命令执行。注意对于 Microsoft® Windows® 操作系统而言仅应使用第一条命令其他命令是供 UNIX 系统如 Linux® 或 Mac OS X使用的。 清单 10. 执行 Python 程序 rb% python mystats.py The mean and variance of the values from 1 to 9 inclusive are 5.0 7.5 rb% chmod x mystats.py rb% ./mystats.py The mean and variance of the values from 1 to 9 inclusive are 5.0 7.5 清单 10 中的命令展示了运行一个包含于文件之中的 Python 程序的方法。第一条命令以文件名调用 Python 解释器无论使用哪种系统安装 Python、Python 解释器位于哪个目录下这种方法都有效。第二条命令 chmod 使包含 Python 程序的文件成为可执行文件。第三条命令告诉操作系统运行程序。这是通过使用 env 程序实现的这是一种独立于操作系统的技术用于定位和运行程序 —— 本例中是 Python 解释器。 重用与缩减 本文介绍了如何在 Python 中编写可重用代码。讨论了如何在 Python 程序中使用方法或可重用块。方法可接受输入参数也可返回数据包括容器数据类型在内。这种功能使方法成为一种可处理大量问题的强大途径。本文还介绍了模块模块可使您将相关方法及数据合并入一个有组织的层次结构中而此结构可方便地在其他 Python 程序中重用。最后还介绍了如何将所有这些内容组合在一起以创建一个功能完整、独立的 Python 程序。您已经看到代码的重用也就意味着您的工作量缩减。对于程序员而言懒惰是一种优势而非陋习。
http://www.w-s-a.com/news/463247/

相关文章:

  • 网站 图片 自动往右移专门做定制化的网站
  • 最好用的cms手机百度关键词排名 网站优化软件
  • 凉山州城乡规划建设局网站长沙网站建设哪家强
  • 广州网站开发创意设计公司企业自己怎么制作网站首页
  • 曲靖 曲靖网站建设软件(app)开发wordpress 没有远程发布
  • 官方网站开发与定制网站建设技术是干嘛的
  • 昆明网站建设工作室网站菜单导航怎么做的
  • 南京网站做的好的公司猪八戒网站做推广怎么样
  • 建站收费标准福州网站搭建
  • 做防护用品的网站欧美网站建设风格特点
  • 龙华做网站联系电话北京软件开发培训班
  • 做网站运营有前途网站的建设与管理的心得体会
  • 河南网站推广怎么做网页制作免费下载
  • 网站如何屏蔽中国ip商丘网站建设的公司哪家好
  • 东莞广告公司东莞网站建设价格鹤壁哪有做网站的
  • 门户网站界面设计logo设计商标设计
  • 建设银行网站驱动宁波网站建设相信荣胜网络
  • 八里河网站建设项目建设可行性企业品牌推广方式有哪些
  • jsp网站开发之html入门知识广州服装设计公司
  • 做电商看的网站有哪些个人网页制作成品免费
  • 沈阳建站多少钱境外网站 备案
  • 提交网站收录入口斗图在线制作
  • 建设化妆品网站服务医药网站前置审批
  • 购物网站修改注册信息模块的分析怎么注册公司logo
  • 那个网站可以做域名跳转的青岛网站建设定制
  • 网站登记模板互联网技术发展及其影响的调查
  • 北京专业的网站建设西安企业家名单
  • 移动网站开发服务器丰都集团网站建设
  • 网站开发逻辑图烫画图案设计网站
  • 客户管理系统哪找公司网站如何做优化