在學(xué)習(xí)Python時(shí)遇到的幾點(diǎn)疑惑, 拿出來(lái)記一下
- 為什么開(kāi)頭要加#!/usr/bin/env python
- 何時(shí)使用is
- __name__
- 淺拷貝 深拷貝
- 字符編碼 Unicode balabala...
- 在循環(huán)中try語(yǔ)句執(zhí)行continue, 是否還會(huì)執(zhí)行finally
#/usr/bin/env python
當(dāng)系統(tǒng)看到這一行的時(shí)候,首先會(huì)到env設(shè)置里查找python的安裝路徑,再調(diào)用對(duì)應(yīng)路徑下的解釋器程序完成操作.如果想直接執(zhí)行還要修改文件的執(zhí)行權(quán)限.
is 與 ==
如果兩個(gè)變量名指向的是同一個(gè)對(duì)象, 那么is返回True
如果兩個(gè)變量名值相等, 那么==返回True
如果is 返回True 那么==也返回True嗎?
一般來(lái)說(shuō)是這樣的, 除非對(duì)象沒(méi)有定義__eq__()方法
__name__
由于主程序代碼無(wú)論是被導(dǎo)入還是被直接執(zhí)行都是會(huì)運(yùn)行的. 所以可以用__name__來(lái)驗(yàn)證模塊是被導(dǎo)入還是直接被執(zhí)行.
- 如果模塊是被導(dǎo)入的, __name__的值為模塊的名字
- 如果模塊是被直接執(zhí)行的, __name__的值為_(kāi)_main__
舉個(gè)例子
#a.py
print __name__
#b.py
import a
直接運(yùn)行a.py輸出結(jié)果為:__main__
運(yùn)行b.py輸出結(jié)果為:a
淺拷貝 深拷貝
參考圖解Python深拷貝和淺拷貝 - By 田小計(jì)劃
字符編碼
參考zhijun liu的知乎回答, 講解的太精彩了
在循環(huán)中存在try-except, 執(zhí)行continue, 是否還會(huì)執(zhí)行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'
執(zhí)行結(jié)果
this is in finally
this is in finally
this is in finally
this is in finally
this is in finally
結(jié)果表明了, 在try-except中執(zhí)行continue不會(huì)立即執(zhí)行下一次循環(huán)