Rom*_*man 7 python database filesystems functional-programming httpwebrequest
要生成输出,函数通常只使用其参数的值.但是,在某些情况下,生成其输出的函数会从文件系统或数据库或Web中读取内容.我希望有一种简单可靠的方法来确保不会发生类似的事情.
我看到的一种方法是创建一个python库的白名单,可用于从文件系统,数据库或Web读取.但如果它是要走的路,我在哪里可以得到这个(可能是巨大的)列表.此外,我不想仅仅因为它可以用来从文件系统读取而禁用整个库.例如,我希望用户能够使用pandas库(存储和操作表格数据).我只是不希望他们能够使用这个库从文件系统中读取数据.
有这个问题的解决方案吗?
答案是否定的.您正在寻找的是一个可以测试的功能functional purity.但是,如此代码所示,无法保证实际上不会调用任何副作用.
class Foo(object):
def __init__(self, x):
self.x = x
def __add__(self, y):
print("HAHAHA evil side effects here...")
# proceed to read a file and do stuff
return self
# this looks pure...
def f(x): return x + 1
# but really...
>>> f(Foo(1))
HAHAHA evil side effects here...
Run Code Online (Sandbox Code Playgroud)
由于对象可以重新定义其行为(字段访问,调用,运算符重载等)的综合方式,因此您始终可以传递使纯函数不纯的输入.因此,唯一的纯函数是那些对它们的参数一无所知的函数......一类通常不太有用的函数.
当然,如果您可以指定其他限制,这将变得更容易.
| 归档时间: |
|
| 查看次数: |
335 次 |
| 最近记录: |