美文网首页
Python基础学习-疑惑

Python基础学习-疑惑

作者: 百分之百的大风 | 来源:发表于2016-11-01 20:23 被阅读20次

    在学习Python时遇到的几点疑惑, 拿出来记一下

    • 为什么开头要加#!/usr/bin/env python
    • 何时使用is
    • __name__
    • 浅拷贝 深拷贝
    • 字符编码 Unicode balabala...
    • 在循环中try语句执行continue, 是否还会执行finally

    #/usr/bin/env python

    当系统看到这一行的时候,首先会到env设置里查找python的安装路径,再调用对应路径下的解释器程序完成操作.如果想直接执行还要修改文件的执行权限.

    is 与 ==

    如果两个变量名指向的是同一个对象, 那么is返回True
    如果两个变量名值相等, 那么==返回True

    如果is 返回True 那么==也返回True吗?
    一般来说是这样的, 除非对象没有定义__eq__()方法

    __name__

    由于主程序代码无论是被导入还是被直接执行都是会运行的. 所以可以用__name__来验证模块是被导入还是直接被执行.

    • 如果模块是被导入的, __name__的值为模块的名字
    • 如果模块是被直接执行的, __name__的值为__main__

    举个例子

    #a.py
    print __name__
    
    #b.py
    import a
    

    直接运行a.py输出结果为:__main__
    运行b.py输出结果为:a

    浅拷贝 深拷贝

    参考图解Python深拷贝和浅拷贝 - By 田小计划

    字符编码

    参考zhijun liu的知乎回答, 讲解的太精彩了

    在循环中存在try-except, 执行continue, 是否还会执行finally

    while/for else

    #!/usr/bin/env python
    a = 1
    while a < 6:
        try:
            'abc' + 123
            print 'this is in try'
        except TypeError:
            continue
            print 'this is in except'
        finally:
            print 'this is in finally'
            a += 1
        print 'this is after try-except'
    

    执行结果

    this is in finally
    this is in finally
    this is in finally
    this is in finally
    this is in finally
    

    结果表明了, 在try-except中执行continue不会立即执行下一次循环

    相关文章

      网友评论

          本文标题:Python基础学习-疑惑

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