Python■你应该知道的Python3.6、3.7、3.8新特性( 六 )
用来指明某些函数形参必须使用仅限位置而非关键字参数的形式 。
这种标记语法与通过 help () 所显示的使用 Larry Hastings 的 Argument Clinic 工具标记的 C 函数相同 。
在下面的例子中 , 形参 a 和 b 为仅限位置形参 , c 或 d 可以是位置形参或关键字形参 , 而 e 或 f 要求为关键字形参:
def f(a b / c d * e f):\t
print(a b c d e f)
以下是合法的调用:
f(10 20 30 d=40 e=50 f=60)
但是 , 以下均为不合法的调用:
f(10 b=20 c=30 d=40 e=50 f=60) # b 不可以是一个关键字参数f(10 20 30 40 50 f=60) # e 必须是一个关键字参数
这种标记形式的一个用例是它允许纯 Python 函数完整模拟现有的用 C 代码编写的函数的行为 。 例如 , 内置的 pow () 函数不接受关键字参数:
def pow(x y z=None /):\t
\"Emulate the built in pow() function\"\t
r = x ** y\t
return r if z is None else r%z
另一个用例是在不需要形参名称时排除关键字参数 。 例如 , 内置的 len () 函数的签名为 len (obj /) 。 这可以排除如下这种笨拙的调用形式:
len(obj='hello') # The \"obj\" keyword argument impairs readability
另一个益处是将形参标记为仅限位置形参将允许在未来修改形参名而不会破坏客户的代码 。 例如 , 在 statistics 模块中 , 形参名 dist 在未来可能被修改 。 这使得以下函数描述成为可能:
def quantiles(dist / * n=4 method='exclusive')\t
...
由于在 / 左侧的形参不会被公开为可用关键字 , 其他形参名仍可在 **kwargs 中使用:
>>> def f(a b / **kwargs):\t... print(a b kwargs)\t
...\t
>>> f(10 20 a=1 b=2 c=3) # a and b are used in two ways\t10 20 {'a': 1 'b': 2 'c': 3
这极大地简化了需要接受任意关键字参数的函数和方法的实现 。 例如 , 下面是 collections 模块中的代码摘录:
class Counter(dict):\t
def __init__(self iterable=None / **kwds):\t
# Note \"iterable\" is a possible keyword argument
3、f 字符串支持 =增加 = 说明符用于 f-string 。 形式为 f'{expr=' 的 f 字符串将扩展表示为表达式文本 , 加一个等于号 , 再加表达式的求值结果 。 例如:
>>> user = 'eric_idle'\t>>> member_since = date(1975 7 31)\t
>>> f'{user= {member_since='\t\"user='eric_idle' member_since=datetime.date(1975 7 31)\"
f 字符串格式说明符允许更细致地控制所要显示的表达式结果:
>>> delta = date.today() - member_since\t
>>> f'{user=!s {delta.days=:d'\t'user=eric_idle delta.days=16075'
= 说明符将输出整个表达式 , 以便详细演示计算过程:
>>> print(f'{theta= {cos(radians(theta))=:.3f')\t
theta=30 cos(radians(theta))=0.866
4、 typing模块的改进Python是动态类型语言 , 但可以通过typing模块添加类型提示 , 以便第三方工具验证Python代码 。 Python 3.8给typing添加了一些新元素 , 因此它能够支持更健壮的检查:
- [霸王龙]地球最强“娃娃鱼”,称霸世界数万年,霸王龙:就知道欺负我
- 产业气象站|散热效果大大下降,CPU硅脂应该这样涂!涂多了得不偿失
- 「霸王龙」地球最强“娃娃鱼”,称霸世界数万年,霸王龙:就知道欺负我
- 大卫聊科技|中国首富原来是京东幕后大老板?低调过头了!,有多少人不知道
- 大头哥哥说娱乐|而自己却还不知道?教你几招快速分辨真假好友,微信已被好友删除
- Python之王|Pandas数据合并与拼接的5种方法
- 北峰电讯|你知道几个?,警用对讲机全是PDT?警察常用的模拟对讲机频段
- 王石头科技|30系列还值得买吗,应该选择哪款?,华为Mate 40要来了,Mate
- 霸王龙:地球最强“娃娃鱼”,称霸世界数万年,霸王龙:就知道欺负我
- 影弟提名1|总是打电话催你“换套餐”?可能很多人都不知道,为什么移动客服
