python函数的编码风格

bob*_*nto 1 python coding-style

需要一个意见.

我有一个定义一些数据的函数.我的想法是用户可以告诉它从文件中读取数据:

acquire_data('read_from_file',filename)
Run Code Online (Sandbox Code Playgroud)

或者用户可以直接提供数据:

acquire_data('use_this_list',datalist)
Run Code Online (Sandbox Code Playgroud)

所以函数会有类似的形式

def acquire_data(mode,arg2):
    if mode == 'read_from_file':
        inputs=open(arg2)
        data = #etc.
    else:
        data = arg2  #or deepcopy(arg2) or whatever
Run Code Online (Sandbox Code Playgroud)

嗯,这有效,但似乎有点老套.特别是,"arg2"具有非常不同的功能,具体取决于"模式"的值.那么:这个好代码吗?这是"pythonic"吗?有人看到更好的方法来编码吗?谢谢.

XOR*_*ist 5

def acquire_data(list_or_filename):
    # assuming py3 here, for py2 use 'isinstance(list_or_filename, basestring)
    if isinstance(list_or_filename, str):
        with open(list_or_filename,"r") as f:
            return acquire_data_from_file(f)
    else:
        return acquire_data_from_list(list_or_filename)
Run Code Online (Sandbox Code Playgroud)