此为 Mathematica 4 文档,内容基于更早版本的 Wolfram 语言
查看最新文档(版本11.1)

2.5.3 属性

f[x_] = x^2 等定义给出了函数值.有时仅需要规定函数的特性,而不需要明确指定函数的值. Mathematica 提供了指定函数特性的一系列属性函数. 例如 Flat 函数规定一个函数有 "无层次" 特性,所有的嵌套结构都被压平从而具有结合性.

给函数赋于 Flat 属性

现在函数f具有可结合属性,嵌套结构被压平

Flat 等属性不仅影响计算,而且影响模式匹配运算. 当对一个函数 进行定义或变换时,必须首先确认这个函数的属性.

函数 f 的定义

由于 f 具有结合律,因而对变量序列自动应用这一定义

属性的处理

显示 f 的属性

清除 f 的属性

Mathematica中符号的属性表

内部函数 Plus 的属性

Mathematica 函数属性中的一个重要属性是 Listable, 该属性规定函数必须线状分布到其自变量中去,即该函数分别作用 于每一个自变量列中的每一个元素上.

内部函数 Log 具有属性 Listable

定义p为 Listable

现在 p 自动线状分布在自变量的集合上

Mathematica 中可赋于函数的许多属性直接影响函数的计算,也有些 属性仅影响函数处理的其它方面. 例如属性 OneIdentity 仅影响模式的匹配, 同样Constant 仅与求导有关的运算相关. Protected 属性影响函数的赋值,Mathematica 不允许对具有此属性的符号 进行定义. 2.4.12 节中讨论的 ProtectUnprotect 函数可以用来设置或清除 这一属性. 从 2.4.12 节看出大部分 Mathematica 的内部对象都被保护以 避免错误的定义.

函数 g 的定义

g 设置属性 Protected

现在就不能再修改 g 的定义

通过 ?f 或一些内部函数就可以查看对一些符号的定义,但当设置了 ReadProtected 属性后,Mathematica 就不允许再查看这个符号的定义. 不过在计算时仍可以继续使用此定义.

尽管无法修改 g,但还可以查看它的定义

gReadProtected 属性

现在就不能查看的 g 定义

SetAttributesClearAttributes 等用来修改符号的属性. 但当对一个符号 设置了 Locked 属性后,就不能再修改它的属性了. 用 Locked, Protected ReadProtected 属性可以防止用户查看和修改 定义.

清除已有值和属性

清除 p 的值和属性 ( p 在前面设置了属性 Listable)

现在 p 不再是 Listable

给函数设置属性就是令函数具有一些性质,该函数在任何时候都具有此性质. 但有时仅需要在特定情况下函数具有这一性质,此时最好不要使用属性, 而调用一个特定函数来实现与属性有关的变换.

调用函数结果为零 Thread 实现 Listable 属性的功能

进行与属性有关变换的函数

Mathematica 中只能给单个符号永久定义属性,但也可以建立具有类似于属性 特性的纯函数.

具有属性的纯函数

这个纯函数将作用于整个集合

增添属性 Listable 使 p 作用于每个元素上