美文网首页未闻code
何在Python项目中挖坑害人

何在Python项目中挖坑害人

作者: 后山小鲨鱼 | 来源:发表于2020-05-28 11:18 被阅读0次

    一日一技:如何在Python项目中挖坑害人

    摘自 kingname [未闻Code ]2019-03-07

    有不少人在写Python的时候,喜欢这样导入模块:

    from re import  *
    
    text =  'adfa123adfasd'
    
    num = findall('(\d+)', text)
    
    print(num)
    

    我今天要告诉你,你这样写就是在给自己挖坑。

    我们来看一下这个坑是怎么样的:

    首先你创建一个文件,内容如下:main.py

    import datetime
    
    print(datetime.datetime.now())
    

    现在我们运行一下,发现一切正常。

    接下来,创建一个,内容如下:bug.py

    from datetime import datetime
    
    def anyfunc():
      print(123)
    

    接下来,修改,内容如下:main.py

    import datetime
    
    from bug import anyfunc
    
    anyfunc()
    
    print(datetime.datetime.now())
    

    此时,你会发现一切正常。如下图所示。

    好了,我们来挖个坑,再次修改,改成下面这样:main.py

    import datetime
    
    from bug import  *
    
    anyfunc()
    
    print(datetime.datetime.now())
    

    现在,函数anyfunc正常运行,但是你会发现,报错了,如下图所示。datetime.datetime.now()

    这是因为,当你的时候,原来在第一行的引入的对象也会被引入到中,此时由于对象和模块的名字相同,就会造成对象覆盖了原来的模块。所以就报错了。

    由于一个大项目很多人合作,可能有些人喜欢

    import datetime
    
    datetime.datetime.now()
    
    datetime.date.today()
    

    有些人喜欢

    from datetime import datetime, date, timedelta
    
    datetime.now()
    
    date.today()
    

    如果再遇上一个人喜欢 fromxxximport*

    那么恭喜你-卒。

    珍爱生命,请禁止使用这种写法。fromxxximport*

    相关文章

      网友评论

        本文标题:何在Python项目中挖坑害人

        本文链接:https://www.haomeiwen.com/subject/vkpoahtx.html