Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/296.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_Backwards Compatibility - Fatal编程技术网

Python 向后兼容性的非常简单的演示

Python 向后兼容性的非常简单的演示,python,backwards-compatibility,Python,Backwards Compatibility,我只想澄清我关于向后兼容性的概念,为此我创建了一个小示例。这个例子并不是为了展示它的任何实际用途,我忽略了程序的所有其他方面,以使它尽可能简单 如果应用程序的第一个版本中有函数: def print_data(data): if isinstance(data, list): for item in data: print item 可以像这样使用: data_to_print = ['one','two','three','four','fiv

我只想澄清我关于向后兼容性的概念,为此我创建了一个小示例。这个例子并不是为了展示它的任何实际用途,我忽略了程序的所有其他方面,以使它尽可能简单

如果应用程序的第一个版本中有函数:

def print_data(data):
    if isinstance(data, list):
        for item in data:
            print item
可以像这样使用:

data_to_print = ['one','two','three','four','five']
print_data(data_to_print)
在下一个版本中,实现将更改为支持字符串

def print_data(data):
    if isinstance(data, list):
        for item in data:
            print item
    elif isinstance(data, str):
        print_data(data.split())
因此,现在它可以通过两种方式使用:

# old style
data_to_print = ['one', 'two', 'three', 'four']
print_data(data_to_print)

# new style
data_to_print = "one two three four five"
print_data(data_to_print)
这可以称为向后兼容性的有效示例吗

如果没有,请给出一个简单的例子。


就您的示例而言,这意味着整个软件中的数据格式将从
list
更改为
string
,并且出于向后兼容性的原因,
print_data
仍然允许
data
采用以前的列表格式。

新版本将中断使用
print_data
作为参数传递方式的应用程序,仅当它们是数组且静默忽略字符串时才打印。从这个意义上讲,它不是向后兼容的。如果您要添加一个新方法
print\u string\u data
,该方法将向后兼容,因为现有代码无论如何都不会使用该方法。如果函数?如果是,则新版本是向后兼容的。在这种情况下,更新是向后兼容的,因为任何使用带有列表的函数都会得到相同的结果。