Python PEP 468 是 Python Enhancement Prop
▥Python
𝄐 0
python的保留关键字,保留字python有哪些,保留字python含义,python保留字和函数,python保留字lambda,python中的保留关键字
Python PEP 468 是 Python Enhancement Proposal 的缩写,它建议解决函数调用时保留传递给函数的关键字参数的顺序。在 Python 3.7 中,这个特性被正式列入标准。
在 Python 3.6 及之前版本中,函数调用时保留关键字参数的顺序是不被保证的。例如:
def foo(a, b, c):
print(a, b, c)
foo(c=3, b=2, a=1)
在 Python 3.6 及之前的版本中,输出结果可能是 1 2 3 或者是 1 3 2,因为字典对象在 Python 中是无序的。
而在 Python 3.7 及之后的版本中,通过使用新的语法 * 和 **,可以显式指示哪些位置参数和关键字参数应该按照它们在函数定义时的顺序出现。例如:
def bar(a, b, *, c):
print(a, b, c)
bar(1, 2, c=3) # 输出: 1 2 3
bar(c=3, a=1, b=2) # 抛出 TypeError 异常,因为位置参数 a 和 b 的顺序不正确
在上面的例子中,函数 bar() 的参数 c 被指定为一个只能通过关键字参数传递的参数,这意味着对于所有的函数调用,参数 c 都必须通过关键字参数的方式传递。这样,在第二个函数调用中,由于位置参数 a 和 b 的顺序不正确,Python 解释器会抛出一个 TypeError 异常。
需要注意的是,在 Python 3.7 及之后版本中,仍然可以使用无序的关键字参数调用函数,但是在这种情况下,Python 解释器会发出警告,提示用户代码可能存在问题。
Python PEP 468 是 Python Enhancement Proposal 的缩写,它建议解决函数调用时保留传递给函数的关键字参数的顺序。在 Python 3.7 中,这个特性被正式列入标准。
在 Python 3.6 及之前版本中,函数调用时保留关键字参数的顺序是不被保证的。例如:
def foo(a, b, c):
print(a, b, c)
foo(c=3, b=2, a=1)
在 Python 3.6 及之前的版本中,输出结果可能是 1 2 3 或者是 1 3 2,因为字典对象在 Python 中是无序的。
而在 Python 3.7 及之后的版本中,通过使用新的语法 * 和 **,可以显式指示哪些位置参数和关键字参数应该按照它们在函数定义时的顺序出现。例如:
def bar(a, b, *, c):
print(a, b, c)
bar(1, 2, c=3) # 输出: 1 2 3
bar(c=3, a=1, b=2) # 抛出 TypeError 异常,因为位置参数 a 和 b 的顺序不正确
在上面的例子中,函数 bar() 的参数 c 被指定为一个只能通过关键字参数传递的参数,这意味着对于所有的函数调用,参数 c 都必须通过关键字参数的方式传递。这样,在第二个函数调用中,由于位置参数 a 和 b 的顺序不正确,Python 解释器会抛出一个 TypeError 异常。
需要注意的是,在 Python 3.7 及之后版本中,仍然可以使用无序的关键字参数调用函数,但是在这种情况下,Python 解释器会发出警告,提示用户代码可能存在问题。
本文地址:
/show-275033.html
版权声明:除非特别标注原创,其它均来自互联网,转载时请以链接形式注明文章出处。