Python基础学习-疑惑
2016-11-01 本文已影响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
浅拷贝 深拷贝
字符编码
参考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不会立即执行下一次循环