在學習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不會立即執行下一次循環