Python: range(start, end, step) 只輸入一個數值的話,默認start=0, step=1,為何可以不把有預設值的參數start放在最後?

加入好友
加入社群
Python: range(start, end, step) 只輸入一個數值的話,默認start=0, step=1,為何可以不把有預設值的參數start放在最後? - 儲蓄保險王

range()

Python: range(start, end, step) 只輸入一個數值的話,默認start=0, step=1,為何可以不把有預設值的參數start放在最後? - 儲蓄保險王

在Python中,函数参数的默认值通常需要放在参数列表的最后。这是因为函数调用时,可以省略具有默认值的参数,从而使用其默认值。如果有多个参数具有默认值,并且其中一个放在了非默认参数之前,就会导致在函数调用时产生歧义,不清楚参数值应该赋给哪个参数。

然而,对于内置函数 range() 来说,它是一个特殊的情况。它的设计考虑到了常见的使用场景,其中最常见的是迭代整数的范围。因此,为了提供简洁性和直观性,range() 函数将起始值作为第一个参数,而步长(step)和结束值作为后续参数。

这种设计决策是为了方便使用 range() 函数,使得常见的用法更加简单明了。而对于自定义函数,如果要实现类似的功能,你可以通过使用关键字参数来指定默认值,并将带有默认值的参数放在参数列表的最后。

总结起来,range() 函数的参数顺序是一个特殊情况,是为了提供简洁性和直观性,并与常见的用法相匹配。在自定义函数中,通常需要将具有默认值的参数放在参数列表的最后,以避免产生歧义。

def my_range(start, stop=None, step=1):
    if stop is None:
        stop = start
        start = 0

    result = []
    i = start
    while i < stop:
        result.append(i)
        i += step

    return result

code:

Python: range(start, end, step) 只輸入一個數值的話,默認start=0, step=1,為何可以不把有預設值的參數start放在最後? - 儲蓄保險王

推薦hahow線上學習python: https://igrape.net/30afN

加入好友
加入社群
Python: range(start, end, step) 只輸入一個數值的話,默認start=0, step=1,為何可以不把有預設值的參數start放在最後? - 儲蓄保險王

儲蓄保險王

儲蓄險是板主最喜愛的儲蓄工具,最喜愛的投資理財工具則是ETF,最喜愛的省錢工具則是信用卡

You may also like...

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *