Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/284.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 切片对象在函数声明中是可变的吗?_Python_Default Value_Mutable - Fatal编程技术网

Python 切片对象在函数声明中是可变的吗?

Python 切片对象在函数声明中是可变的吗?,python,default-value,mutable,Python,Default Value,Mutable,在了解了如何使用python之后,我检查了所有代码,以查找使用可变序列时可能出现的错误 现在我有一个函数,它的签名是: def get_measurements(self, shape = slice(None, None, None), size = slice(None, None, None), height = slice(None, None, None),

在了解了如何使用python之后,我检查了所有代码,以查找使用可变序列时可能出现的错误

现在我有一个函数,它的签名是:

def get_measurements(self, shape = slice(None, None, None), 
                     size = slice(None, None, None), 
                     height = slice(None, None, None), 
                     pressure = slice(None, None, None),  
                     LE = slice(None, None, None),                          
                     fname = None)

现在我想知道,切片对象是可变的吗?在上述情况下,这是否会导致默认值出现问题?

slice
对象是不可变的

>s=slice(无)
>>>
切片(无,无,无)
>>>s.start=1
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
AttributeError:只读属性
>>>s.stop=1
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
AttributeError:只读属性
>>>s.step=1
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
AttributeError:只读属性

为什么不试着给它们的属性赋值并找出答案?@jornsharpe“程序测试可以用来显示bug的存在,但永远不会显示它们的缺失!”-E.W.Dijkstra“谁在乎Dijkstra说了什么,你只想知道
切片
对象是否是可变的”—我,现在如果它们是,这不一定是个问题,除非
get_measurements()
中的一些代码实际上对它们进行了变异。是的,这表明它在单个cpu上存在缺陷,但代码总是以这种方式编译/解释吗?这难道不是一种编译器特有的行为,可能只适用于英特尔和cpython?我不确定处理器与它有什么关系,但你是对的,这可能与cpython不同。cpython的编译方式可能会使它的行为因体系结构而异。-语言规范中是否有一个正式的定义,它的行为应该类似于xyz,或者是设计上未指定的?