Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/328.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中range()参数的顺序_Python_Range - Fatal编程技术网

python中range()参数的顺序

python中range()参数的顺序,python,range,Python,Range,我想知道Python 2.7中的range()函数如何具有如下语法: range(start, stop[, step]) 因为在Python中创建函数要求可选参数位于参数项的末尾,如中所示: function(a, b, c=1) (由于某些原因,我找不到range()声明为so的文件…) 但是可以只输入一个(停止)整数,如范围(10) 那么range是否使用了下面这样的构造?还是有一种更优雅的方式 def TestRange(start, stop = None, stepSize =

我想知道Python 2.7中的range()函数如何具有如下语法:

range(start, stop[, step])
因为在Python中创建函数要求可选参数位于参数项的末尾,如中所示:

function(a, b, c=1)
(由于某些原因,我找不到range()声明为so的文件…) 但是可以只输入一个(停止)整数,如
范围(10)

那么range是否使用了下面这样的构造?还是有一种更优雅的方式

def TestRange(start, stop = None, stepSize = 1):
    if stop == None:
        d = 0
        TrackTest = []
        while d < start:
            TrackTest += [d]
            d += stepSize
        return TrackTest
    else:
        d = start
        TrackTest = []
        while d < stop:
            TrackTest += [d]
            d += stepSize
        return TrackTest

查看
range
的源代码(这是
range\u新的
功能):


如果Python3
range
中的Python2或Python3(PyTuple\u Size(args))不返回列表,它将返回一个
range
对象。生成器适用于Python3版本(或Python2
xrange
)我试过了,最后得出结论,在Python中创建函数要求可选参数位于参数项的末尾,如
function(a,b,c=1)
。不允许使用
function(a=1,b,c=1)
print TestRange(6)
print TestRange(2, 6)
print TestRange(2, 6, 2)
if (PyTuple_Size(args) <= 1) {
    if (!PyArg_UnpackTuple(args, "range", 1, 1, &stop))
        return NULL;
    stop = PyNumber_Index(stop);
    if (!stop)
        return NULL;
    start = PyLong_FromLong(0);
    if (!start) {
        Py_DECREF(stop);
        return NULL;
    }
    step = PyLong_FromLong(1);
    if (!step) {
        Py_DECREF(stop);
        Py_DECREF(start);
        return NULL;
    }
}
else {
    if (!PyArg_UnpackTuple(args, "range", 2, 3,
                           &start, &stop, &step))
        return NULL;

    /* Convert borrowed refs to owned refs */
    start = PyNumber_Index(start);
    if (!start)
        return NULL;
    stop = PyNumber_Index(stop);
    if (!stop) {
        Py_DECREF(start);
        return NULL;
    }
    step = validate_step(step);    /* Caution, this can clear exceptions */
    if (!step) {
        Py_DECREF(start);
        Py_DECREF(stop);
        return NULL;
    }
}