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

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

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

  • 相关阅读:
    MSMQ, WCF and IIS: Getting them to play nice (Part 2)[转]
    c#通用函数[转]
    MSMQ, WCF and IIS: Getting them to play nice (Part 1)[转]
    Building a Pub/Sub Message Bus with Wcf,Msmq,IIS
    关于virtual,new,override用法详解
    wcf服务代理层添加wcf服务异步代理
    HttpModule教程
    创造和把握职位升迁的10条规则
    wcf服务代理层添加wcf服务异步代理
    windows server 2008下IIS设置问题
  • 原文地址:https://www.cnblogs.com/testfan2019/p/11912886.html
Copyright © 2011-2022 走看看