Python基础学习-疑惑

在学习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基础学习-疑惑)