zoukankan      html  css  js  c++  java
  • Python3.8新特性--PositionalOnly参数

    “理论联系实惠,密切联系领导,表扬和自我表扬”——我就是老司机,曾经写文章教各位怎么打拼职场的老司机。

    不记得没关系,只需要知道:有这么一位老司机,

    穿上西装带大家打拼职场!

    操起键盘带大家打磨技术!

     2019年10月中旬,Python 3.8发布了。

        英语好的Python爱好者,可以看看官宣:

    https://docs.python.org/3.8/whatsnew/3.8.html

        今天老司机给大家讲一下新特性中比较语焉不详的 “Positional-only参数”。

        先看一段原文:

        后面的基本没怎么解释了…

        老司机第一次看时候,觉得有点儿一头雾水。

        没关系,计算机是一种实践科学。撸码试试看。

        安装好最新的Python 3.8,配好最新的PyCharm。

        先按照例子来:

    def func1(a, b, /, c, d, *,  e, f):

    print(a, b, c, d, e, f)

    func1(1,2,3,d=4,e=5,f=6)

    # func1(1,2,3, 4,e=5,f=6) #这样也可以

    # 输出 1 2 3 4 5 6

    官网的例子能通过,不能说明什么,还是不明白“/”和“*”的区别。

        小心谨慎改造一下:

    def func1(a, b, /, c, d, *,  e, f):

       print(a, b, c, d, e, f)

    def func2(a1, /, b1, *, c1):

    print(a1, b1, c1)

    func1(1,2,3,4,e=5,f=6)

    func2(10,20, c1=30)

    # 输出

    1 2 3 4 5 6

    10 20 30

    再改造一下,这次去掉“*”:

    def func1(a, b, /, c, d, *,  e, f):

       print(a, b, c, d, e, f)

    def func2(a1, /, b1, *, c1):

       print(a1, b1, c1)

    def func3(a2, /, b2):

    print(a2, b2)

    func1(1,2,3,4,e=5,f=6)

    func2(10,20, c1=30)

    func3(100, 200)

    # func3(100, b2=200) # 效果一样

    # 输出

    1 2 3 4 5 6

    10 20 30

    100 200

    对比一下,去掉“/”,只留“*”

    def func1(a, b, /, c, d, *,  e, f):

       print(a, b, c, d, e, f)

    def func2(a1, /, b1, *, c1):

       print(a1, b1, c1)

    def func3(a2, /, b2):

       print(a2, b2)

    def func4(*, a3):

       print(a3)

    func1(1,2,3,4,e=5,f=6)

    func2(10,20, c1=30)

    func3(100, 200)

    # func3(100, b2=200) 也没问题

    func4(a3=1000) # 不写a3=,则报错

    # 输出:

    1 2 3 4 5 6

    10 20 30

    100 200

    1000

    规律基本看出来了吧?

    •“/”前,必须用位置变量;

    •“/”后,“*”前,可用位置变量,可用关键字变量;

    •“*”后,必须用关键字变量形式。

    看看相关的PEP文档PEP570:

    https://www.python.org/dev/peps/pep-0570/

    里面有一段,这么写的:

    实践和理论(PEP文档)都对上了吧?

    学Python,多看PEP文档,除了好处,还有更多的好处。

    面试时候,如果你能引经据典说出PEP文档如何如何写的,你看哪个面试官会不高看一眼?

    多数情况下,直接初级转中级,“手动点点点“”变“性能自动化”。

    前提是被面试人说对了,对吧? ^_^

    作  者:Testfan Arthur

    出  处:微信公众号:自动化软件测试平台

    版权说明:欢迎转载,但必须注明出处,并在文章页面明显位置给出文章链接

  • 相关阅读:
    Hibernate save, saveOrUpdate, persist, merge, update 区别
    Eclipse下maven使用嵌入式(Embedded)Neo4j创建Hello World项目
    Neo4j批量插入(Batch Insertion)
    嵌入式(Embedded)Neo4j数据库访问方法
    Neo4j 查询已经创建的索引与约束
    Neo4j 两种索引Legacy Index与Schema Index区别
    spring data jpa hibernate jpa 三者之间的关系
    maven web project打包为war包,目录结构的变化
    创建一个maven web project
    Linux下部署solrCloud
  • 原文地址:https://www.cnblogs.com/testfan2019/p/11912886.html
Copyright © 2011-2022 走看看