Python知識與錯誤解決

文|Seraph

00 | 函數及文件含義

  1. __init__.py
    當加載模塊時(目錄名),會默認加載此文件,__init__.py文件一般就是導入目錄下的其他子模塊。相當於用__init__.py做模塊導入的統一管理。
    但我們導入模塊的時候,依然要寫上子模塊的名稱。

  2. dir()
    查詢模塊的屬性、方法等。如果輸入參數爲空,便是查詢當前模塊的屬性、方法等。

  3. __file__
    當前文件的位置(包含文件名)。可能時絕對路徑,有可能是相對路徑,依賴於python執行時的參數。

  4. os.path.dirname()
    截取當前文件的上層目錄。

  5. isinstance()函數判斷一個對象是否時某種類型,與type()不同的是,isinstance()會認爲子類是一種父類類型,考慮繼承關係。

  6. hasattr()判斷對象是否包含對應的屬性。

  7. os.environ.get()獲取環境變量。

  8. zip()將可迭代的對象打包成一個個元組,以列表的形式返回。

  9. dot()函數爲矩陣乘,*則表示嘴哥元素相乘。

  10. eval() 函數:執行一個字符串表達式。

01 | 解決方案

  1. 將jupyter的ipynb文件轉爲py文件。
    解決:jupyter nbconvert --to script demo.ipynb

02 | OS模塊

函數名 含義
os.listdir() 返回指定的文件夾包含的文件或文件夾的名字的列表
os.path.join() 連接兩個或更多的路徑名組件

03 | str模塊

函數名 含義
str.split() 分割字符串

round函數
使用方法:round(number,digits)
digits>0,四捨五入到指定的小數位
digits=0, 四捨五入到最接近的整數
digits<0 ,在小數點左側進行四捨五入
如果round()函數只有number這個參數,等同於digits=0
四捨五入規則:
要求保留位數的後一位<=4,則捨去3,如5.214保留小數點後兩位,結果是5.21
要求保留位數的後一位“=5”,且該位數後面沒有數字,則不進位,如5.215,結果爲5.21
要求保留位數的最後一位“=5”,且該位數後面有數字,則進位,如5.2151,結果爲5.22
要求保留位數的最後一位“>=6”,則進位。如5.216,結果爲5.22

99 | 問題解決

  1. NameError:name ‘xrange’ is not defined
    解決:在Python 3中,range()與xrange()合併爲range( )。如果你是python3,使用range即可。

  2. 使用pip時,from pip import main ImportError: cannot import name ‘main’。
    解決:pip老版本升級到新版本的問題。

  • 打開/usr/bin/pip文件
from pip import main  
if __name__ == '__main__':  
    sys.exit(main()) 

修改爲

from pip import __main__  //修改爲__main__,注意是兩個下劃線
if __name__ == '__main__':  
    sys.exit(__main__._main())//增加__main__._
  1. 錯誤提示:unindent does not match any outer indentation level
    解決:不一致的縮減導致。

  2. 錯誤提示:ImportError: No module named 'cPickle'
    解決:python3沒有cPickle庫,應該用pickle。

  3. 使用range錯誤提示:TypeError: 'float' object cannot be interpreted as an integer
    解決:首先錯誤事range應該接收int類型的參數。一般可能事python2的除法與python3不一致導致的。
    python2:a = b/c結果爲int
    python3:a = b/c結果爲float,如果需要結果爲int,需要修改爲a = b//c

  4. 進行某些安裝操作,pip突然壞掉了,提示如下:

Traceback (most recent call last):
  File "/usr/local/bin/pip", line 6, in <module>
    from pip._internal import main
ImportError: No module named 'pip._internal

解決:重新安裝pip

wget https://bootstrap.pypa.io/get-pip.py  --no-check-certificate
python3 get-pip.py --force-reinstall  #如果你是python3,記得不要寫成python
  1. unindent does not match any outer indentation level
    解決:不一致的縮進導致。如tab不一致,可以使用多次按space來表示tab,一個tab表示四個space`。

  2. TypeError: 'module' object is not callable
    解決:Python導入模塊的方法有兩種:import module 和 from module import,區別是前者所有導入的東西使用時需加上模塊名的限定,而後者不要。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章