Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python PIL图像对象是可变的吗?_Python_Python Imaging Library_Pillow_Mutable - Fatal编程技术网

Python PIL图像对象是可变的吗?

Python PIL图像对象是可变的吗?,python,python-imaging-library,pillow,mutable,Python,Python Imaging Library,Pillow,Mutable,我尝试运行一个如下所示的函数: #file A_FILE from PIL import Image def apply_black_gradient(input_img, output_img, gradient): # parameters: # input_img : Image object # output_img: Image object # gradient: gradient rate applied to input_img ...

我尝试运行一个如下所示的函数:

#file A_FILE
from PIL import Image

def apply_black_gradient(input_img, output_img, gradient):
    # parameters:
    # input_img : Image object
    # output_img: Image object
    # gradient: gradient rate applied to input_img

    ...Some codes here...
    output_img = Image.alpha_composite(input_im, gradient_im)

    return
我的问题是当我在另一个文件中使用该函数时

from A_FILE import apply_black_gradient

apply_black_gradient(img1,img2,gradient)

img2.show()
应用梯度后,结果不会发生变化

我想知道为什么
Image
类的
PIL
中的实例是不可变的

我确信这个算法是有效的,因为当我使用 返回输出\u img 我得到了正确的结果。我只想把结果传给论点


提前感谢。

这是对Python的误解,而不是对PIL的误解。在
apply_black_gradient
中,为
output_img
指定一个值。这只会更改函数内该变量中存储的值。因此在
apply_black_gradient
内部,
output_img
的值已更改,但这并没有更改其他文件中
img2
的值。在这种情况下,最好的方法是按照您所说的
返回output\u img

如果将类似list/dict/object的内容作为参数传递,则可以在函数中修改部分内容(列表的元素、dict的成员),并在调用代码中查看这些修改。但是在上面发布的代码中不需要这样做,只需使用
return

就可以修改
输入\u img
,因此从这个意义上讲,它们是“可变的”,就像
列表
dict
一样。这是一个例子。