好文档 - 专业文书写作范文服务资料分享网站

Python 函数、文件与模块

天下 分享 时间: 加入收藏 我要投稿 点赞

...函数:返回数据

给生成乘法表的两个 for 循环。

  清单 4. 在函数中返回一个值

esTable2 函数,函数创建了一个 5 行(默认值)3 列(所提供的值)的乘法表。

ncols 的两个输入参数,允许在调用函数时更改乘法表的大小。这两个参数随后会被提供

将计算结果值返回给调用代码。有时要实现这两个目的,需要分别调用不返回任何数据的

  使用方法时,人们最希望获得的结果并非总是乘法表。您可能希望完成一次计算,并

,甚至可以一个参数都不包含。但这种方法可能会导致某些问题。如果您在函数调用期间

高的灵活性,因为在您调用函数时,可以包含两个输入参数,也可以仅包含一个输入参数

调用方法(子例程)和返回值的方法(函数)。但在 Python 中,您无需担心这些语义问

未指定全部参数,则必须显式地写出您所指定的参数的名称,以使 Python 解释器能够正

提供默认值,方法是在参数名后添加等号和值,例如 nrows=5。默认参数使程序获得了更

  关于 timesTable2 函数的另一要点就是两个输入参数有默认值。在函数签名中为参数

题,因为通过使用 return 语句,几乎可以相同的方式实现这两个目的(参见清单 4)。

确地调用函数。最后一个函数调用正体现了这一点,它显式地调用了带有 ncols=3 的 tim

3.0...   sum = 0.0>>> def stats(data):...   for value in data:...     sum += value...   return (sum/len(data))>>> stats([1, 2, 3, 4, 5])   # Find the mean value from a list3.0>>> stats()结果返回给调用语句。

  清单 5. 返回复合值

算一组数据的平均值,然后返回值。函数定义接受一个输入参数。平均值通过 return 语

含恰当的错误检查和处理,以应对这些情况,但这不在本文讨论范围内。)

此示例已经非常有用,但还可使它更强大,如清单 5 所示。在 Python 中,函数可返回

句传回。当您调用带有包含数字 1 到 5 的 list 或 tuple 的函数时,返回值会显示在屏幕

  这个简单的函数遍历 data(假设 data 为一个容纳有数字数据的 Python 容器),计

任何有效的对象类型,包括容器类型在内。因此,您可以计算多个数量,并轻松地将多个

的函数,就会导致出错。(在此类情况下抛出错误是很有意义的。更高级的处理方法应包

上。如果调用不带任何参数的函数、带非容器数据类型的函数或带内含非数字数据的容器

...   sum = 0.0>>> stats(\>>> def stats(data): File \line 1, in ? File \line 1, in ? File \line 4, in statsTraceback (most recent call last):Traceback (most recent call last):TypeError: stats() takes exactly 1 argument (0 given)TypeError: unsupported operand type(s) for +=: 'float' and 'str' >>> stats((1, 2, 3, 4, 5))   # Find the mean value from a tuple...5.0 7.5 (3.0, 2.5)>>> print m, v...   sum = 0.0解包为各自的分量。

...   for value in data:...     sum += value>>> stats([1, 2, 3, 4, 5])...   mean = sum/len(data)...   return (mean, variance)...   variance = sum/(len(data) - 1)...     sum += (value - mean)**2>>> (m, v) = stats([1, 2, 3, 4, 5, 6, 7, 8, 9])  模块:简化代码重用

...   for value in data:,创建并返回一个 tuple。新 stats 函数的函数体要略加修改,以计算数字序列的样本方

差。最后,正如 stats 函数的两次调用所示,tuple 值可作为一个 tuple 存取,也可将其

  至此,您或许已相信了代码重用的价值。但即便是使用函数,您依然需要在打算使用

  为了从一个函数中返回多个值,要将其括在一个括号中并以逗号分隔 —— 换句话说

函数时重新输入函数体。例如,当您打开一个新的 Python 解释器时,必须键入之前所创

建的所有函数。幸运的是,您可以使用模块 将相关函数(和其他 Python 对象)封装在

清单 6. 使用模块

5.0 7.5 (5.0, 7.5)>>> print m, v>>> import test含于 Python 解释器之中。

断您想使用的对象。

>>> from test import stats>>> test.stats([1, 2, 3, 4, 5, 6, 7, 8, 9])  第三行 from test import stats 也打开了文件 test.py,但它隐式地将 stats 方法置

函数,但若需要,您还可定义更多的函数。调用 stats 函数时,应以模块名 test 作为函

  为介绍在 Python 中使用模块的方法,我们将重用清单 5 中的 stats 方法。有两个

入当前文件的作用域内,以使您能够直接调用 stats 函数(无需使用模块名)。明智地使

一起,将其保存在一个文件中,然后将这些已定义好的函数导入到新 Python 代码内,包

  第一行 import test 打开文件 test.py 并处理文件中的各条语句。这里仅定义了 stats

更糟糕的作用域冲突错误。不要滥用您的新武器!新的 Python 解释器,然后输入如清单 6 所示的语句。

>>> (m, v) = stats([1, 2, 3, 4, 5, 6, 7, 8, 9])用 from ... import ... 语法可使您的程序更简洁,但过度的使用也会导致混淆,甚至出现选择:您可以从与本文相关的压缩文件中提取名为 test.py 的文件,也可以在编辑器中键入函数,然后将文件保存为 test.py。完成上一步后,在您保存 test.py 的目录中启动一个数前缀。之所以使用这种复杂的名称,是出于作用域 方面的考虑,作用域表示一个程序内

。这一点非常重要,因为您可能拥有多个名称相同的对象。作用域规则可帮助 Python 判

名称的有效范围。为告知 Python 您要调用的是哪个 stats 方法,就必须提供完整的名称

所示。

  模块库

块访问。常用模块示例如下:

FILENAME  math>>> help(math)Help on module math: File \line 1, in ?  math 包含有用的数学函数。

  array 包含数组数据类型和相关函数。

  datetime 包含有用的日期和时间处理函数。

  sys 包含用于与 Python 解释器交互的数据和方法。

  清单 7. 获得关于 math 模块的帮助信息>>> help(math)  使用 Python 编程语言的一个主要好处就是大型的内置式标准库,可作为 Python 模

  由于这些都是内置模块,因此您可以通过帮助解释器来了解更多相关内容,如清单 7

python2.4/lib-dynload/math.soTraceback (most recent call last):NameError: name 'math' is not defined  /System/Library/Frameworks/Python.framework/Versions/2.4/lib/>>> import math   # Need to import math module in order to use it

Python 函数、文件与模块

...函数:返回数据给生成乘法表的两个for循环。  清单4.在函数中返回一个值esTable2函数,函数创建了一个5行(默认值)3列(所提供的值)的乘法表。ncols的两个输入参数,允许在调用函数时更改乘法表的大小。这两个参数随后会被提供将计算结果值返回给调用代码。有时要实现这两个目的,需要分别调用不返
推荐度:
点击下载文档文档为doc格式
9y6jy4i47t4yj364q360565jb3urvy010z5
领取福利

微信扫码领取福利

微信扫码分享