最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • python3代码测试中会出现哪些错误?

    正文概述    2020-06-03   184

    上篇我们讲过python3代码调试的环节了,调试后我们会发现一些错误,这正是代码调试的意义所在。只有通过调试,我们才能发现问题所在,并进行调整。一个好的代码离不开不断地修改和测试,测试只是一种检验代码的手段,写好代码是基础。下面小编就带大家看看代码测试环节会出现的问题,并找寻解决办法。


    首先来说下Debug大致的的流程,

    1.定位错误——代码出错我们首先看到是在哪一行报错,也就是定位错误源

    2.错误类型——找到错误位置了,然后我们来看下错误是哪种类型,以便于我们缩小排查的范围

    3.修改错误——定位到错误具体原因了,接下来我们变知道如何进行修改了,当然我们大多数时候都是通过去网上去搜这个错误原因,这里要说下,国内的网站大多数可能不能满足你的话,我建议你去国外的,比如stackflow,之类,在专栏中Debug网址也介绍过。

     

    常见错误举例:错误地将表达式作为函数的默认参数

    Python中,我们可以为函数的某个参数设置默认值,使该参数成为可选参数。虽然这是一个很好的语言特性,但是当默认值是可变类型时,也会导致一些令人困惑的情况。我们来看看下面这个Python函数定义:

    >>> def foo(bar=[]): # bar是可选参数,如果没有提供bar的值,则默认为[],
    ... bar.append("baz") # 但是稍后我们会看到这行代码会出现问题。
    ... return bar


    Python程序员常犯的一个错误,就是想当然地认为:在每次调用函数时,如果没有为可选参数传入值,那么这个可选参数就会被设置为指定的默认值。在上面的代码中,你们可能觉得重复调用foo()函数应该会一直返回'baz',因为你们默认每次foo()函数执行时(没有指定bar变量的值),bar变量都被设置为[](也就是,一个新的空列表)。

     但是,实际运行结果却是这样的:

    >>> foo()
    ["baz"]
    >>> foo()
    ["baz", "baz"]
    >>> foo()
    ["baz", "baz", "baz"]

    很奇怪吧?为什么每次调用foo()函数时,都会把"baz"这个默认值添加到已有的列表中,而不是重新创建一个新的空列表呢?

     

    答案就是,可选参数默认值的设置在Python中只会被执行一次,也就是定义该函数的时候。因此,只有当foo()函数被定义时,bar参数才会被初始化为默认值(也就是,一个空列表),但是之后每次foo()函数被调用时,都会继续使用bar参数原先初始化生成的那个列表。

     当然,一个常见的解决办法就是:

    >>> def foo(bar=None):
    ... if bar is None: # or if not bar:
    ... bar = []
    ... bar.append("baz")
    ... return bar
    ...
    >>> foo()
    ["baz"]
    >>> foo()
    ["baz"]
    >>> foo()
    ["baz"]


    以上就是python3代码测试中可能会出现的一些错误。上面只是常见错误的举例,当然我们实际测试环节还会遇到其他大大小小的问题,欢迎小伙伴们留言补充。


    起源地下载网 » python3代码测试中会出现哪些错误?

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元