专业 Python 编程资源

Resources on Professional Python Programming

我正在寻找可以帮助我将 python 函数定义转变为专业品质函数的资源。

例如,我当前的 python 定义具有以下形式:

def foo(arg1,arg2,arg3=some_val,arg4=some_other_val):
    """ Do something with the args """

    # Create data using args

    if arg3 == this_val:
        return dataset_1, dataset_2

    else :
        return dataset_1, dataset_2, dataset_3

我想要一种方法,根据我要求的 return 数据,return 我感兴趣的数据。

例如,我可以说:

ds_1, ds_2, ds_3 = foo(arg1,arg2)

ds_1, ds_2 = foo(arg1,arg2,arg3=only_two_datasets_bool)

如何使函数不需要可选参数来知道我只需要两个数据集?

这类似于说 matplotlib 构造函数,其中可以说:

n = plt.hist(data)

其中 n 是直方图,但也可以这样做

n, bins = plt.hist(data)

并且 hist 函数知道 return 这两个值具有相同的数据输入(即没有可选参数说明它应该 return bins)。

虽然它可能看起来笨拙且不优雅,但您可以解压缩三个变量,并在需要时只使用其中的两个:

def foo(arg1, arg2):
  return (arg1,arg2,3)

a, b, _ = asd(1,2)
print a, b # will print "1 2"

虽然 _ 在 python 中并不像在许多其他语言中那样表示 "unused variable",但许多(或可能是大多数)会这样理解。即使是不提供明确支持的语言,如 Lua,也鼓励使用 _ 作为占位符变量。

以这样的方式使用它,以便清楚 _ 的含义,因为它在 python shell 中包含先前计算的表达式的值:

>>> 1+2
3
>>> _+3
6
>>>