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,区别是前者所有导入的东西使用时需加上模块名的限定,而后者不要。

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