Python 调用子进程和函数式编程

Python 调用子进程和函数式编程,python,functional-programming,mutability,Python,Functional Programming,Mutability,是否有可能避免副作用并仍然创建子进程?例如: from subprocess import call def ls(directory): return call("ls %s" % directory, shell=True) 如果不可能,函数式语言如何进行这样的操作 谢谢。在函数式语言中,创建子进程并执行与给定进程类似的操作不是一个纯粹的函数,它有副作用 在函数式语言中也有不纯函数,但它会尽量减少不纯函数中的代码,并使函数是不纯显式的。你可以读到 例如,考虑到Haskell是功能

是否有可能避免副作用并仍然创建子进程?例如:

from subprocess import call

def ls(directory):
    return call("ls %s" % directory, shell=True)
如果不可能,函数式语言如何进行这样的操作


谢谢。

在函数式语言中,创建子进程并执行与给定进程类似的操作不是一个纯粹的函数,它有副作用

在函数式语言中也有不纯函数,但它会尽量减少不纯函数中的代码,并使函数是不纯显式的。你可以读到

例如,考虑到Haskell是功能最强大的语言,它明确表示它对
createProcess
函数的签名/声明有副作用

createProcess :: CreateProcess -> IO (Maybe Handle, Maybe Handle, Maybe Handle, ProcessHandle)
IO明确表示它有副作用

如果你只是想避免被淘汰,你可以这样做

import os
import subprocess

FNULL = open(os.devnull, 'w')

def ls(directory):
    return subprocess.call(['ls',directory], stdout=FNULL, stderr=FNULL)

你想要什么是不可变的?对不起,我弄糊涂了。我更新了问题。副作用是打印目录内容?是的。。。这被认为是副作用,对吗?是的,只是检查一下。