• python常用基础笔记


    国内镜像

    使用方法,比如安装pandas模块:
    pip install -i http://pypi.douban.com/simple/pandas

    常用镜像来源:

    1. 清华大学开源镜像站 https://mirrors.tuna.tsinghua.edu.cn/
    2. 网易开源镜像站 http://mirrors.163.com/
    3. 阿里巴巴开源镜像站 https://opsx.alibaba.com/mirror/
    4. 网易开源镜像站http://mirrors.163.com/
    5. 搜狐镜像站(PHP,python)http://mirrors.sohu.com/
    6. 淘宝镜像 https://npm.taobao.org/mirrors/
    7. 腾讯软件源 mirrors.cloud.tencent.com/
    8. 华为开源镜像站:mirrors.huaweicloud.com/
    9. 中国科技大学:mirrors.ustc.edu.cn/
    10. 北京交通大学:mirror.bjtu.edu.cn/cn/
    11. 上海交通大学:ftp.sjtu.edu.cn/
    12. 北京理工大学:mirror.bit.edu.cn/web/
    13. 浙江大学:http://mirrors.zju.edu.cn
    14. 北京理工大学:http://mirror.bit.edu.cn
    15. 华中科技大学:mirrors.hust.edu.cn/
    16. 豆瓣http://pypi.douban.com/simple/
    17. 华中理工大学http://pypi.hustunique.com/simple/
    18. 山东理工大学 http://pypi.sdutlinux.org/simple/
    查看对象占用内存字节
    import sys
    
    sys.getsizeof('abc')
    
    
    • 1
    • 2
    • 3
    • 4
    查看模块版本号

    模块的__version__的属性可以查看模块版本号

    import numpy as np
    import pandas as pd
    # 查看模块版本号
    np.__version__
    
    • 1
    • 2
    • 3
    • 4
    查看对象内存占用
    import sys
    sys.getsizeof(obj)  # 单位是byte
    
    • 1
    • 2
    更新第三方模块

    pip3 install -U 模块名,比如pip3 install -U pandas

    pip3 install --upgrade matplotlib 更新第三方库

    帮助文档

    查看帮助文档help函数,比如:help(pandas.DataFrame)
    查看类的属性或方法dir函数,比如:dir(pandas)

    在可以在对象后面带上?回车,这是python的一个特性,比如pandas.DataFrame?

    忽略警告内容

    warnings.filterwarnings('ignore')

    重新导入模块

    import 导入模块后,修改了模块,保存,再import导入是不生效的。导入内存中已经有这个模块了,无法再次导入。
    需要使用from imp import reload
    reload('module') # 使用reload重新导入模块,修改的模块才会生效。

    查找模块存放的路径

    模块的__file__属性可查看模块存放路径
    import os
    os.__file__

    第三方模块安装:
    • 使用pip安装:pip3 install restrying
    • 下载源码解压,进入解压目录后的目录,python setup.py install
    • ***.whl’安装方法
      pip3 install wheel
      pip3 install ***.whl
    • 查看已安装模块:help('modules')
    导入自定义模块:

    如果在同一文件夹下:直接导入
    import hello
    hello.hello()
    如果不在同一文件夹下:
    sys.path是一个路径列表,import导入时,会从遍历列表路径寻找模块。
    通过import syssys.path.append('父目录的路径')来改变,这种方法属于一次性的,只对当前的python解释器进程有效,关掉python重启后就失效了。
    sys.path可以查看系统环境位置,一般site-packages这个位置专门用于存放模块。
    py会自动查找当前目录下和sys添加目录下的模块。
    if __name__ == '__main__': 运行主程序

    导入模块包(package):

    1. 创建一个文件夹,用于存放相关的模块,文件夹的名字即包的名字;
    2. 在文件夹中创建一个__init__.py的模块文件,内容可以为空,python定义用以识别这是一个包。
    3. 在用.方法导入包下面的模块。import package_name.module_name as another_name
    程序中断快捷键

    死循环中断:快捷键:ctrl+ c
    程序停止:quit() exit()

    深拷贝与浅拷贝

    copy模块: import copy
    深拷贝:copy.deepcopy
    浅拷贝:copy.copy

    eval函数:字符串解析成表达式

    将字符串解析成表达式运算并返回其值。
    比如eval("{'id':123,'name':'alice'}")会返回一个字典对象

    exec函数:执行字符串语句
    d = {'score':{'match':80,'english':90}}
    try:
    	exec("d['score']['match']=80")
    except Exception as e:
    	print(e)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    动态变量
    locals()['aa'] = 1	#使用python内置函数:locals()
    aa
    #out:1
    locals()['aa']
    #out:1
    #或者也可以用字典
    d = {}
    d['aa'] = 1
    d['aa']
    #1,相对用字典可能灵活点。
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    map函数和filter函数

    map:映射函数,filter:筛选函数;两者可自定义函数实现元素映射、筛选

    ls = list(range(10))
    # 两个函数:py2返回的是列表,py3返回的是迭代器
    filt = filter(lambda x: x % 2 == 0,ls)
    mp = map(lambda x: x + 1,ls)
    
    • 1
    • 2
    • 3
    • 4
    显示抛出异常

    抛出异常意味着结束程序,同事打印指定异常日志

    raise
    if [condition]:
    	raise '异常显示内容'
    
    • 1
    • 2
    • 3
    查看地址引用次数

    当一个对象没有任何引用,python自动垃圾回收-内存释放

    import sys
    
    class A():
      def __init__(self):
        pass
      
      def __del__(self):
        print('执行__del__方法')
        
    m = A()
    m1 = m
    m2 = m
    print(sys.getrefcount(m)) 	# 加上sys本身调用,m有四层引用
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    编码

    Unicode 是字符集
    Unicode字符集的作用就是给每一个字符分配一个唯一的ID(又称码位)。
    编码规则是将码位转换为字节序列的规则。
    汉字unicode编码范围:[\u4e00-\u9fa5],可正则表达式筛选中文汉字
    创建Unicode字符:s = u'unicode 字符串' 前面加u
    常见编码参数
    编码错误处理

    文件读取编码问题

    要读取非UTF-8编码的文本文件,需要给open()函数传入encoding参数,例如,读取GBK编码的文件:

    f = open('/Users/michael/gbk.txt', 'r', encoding='gbk')
    f.read()
    
    • 1
    • 2

    遇到有些编码不规范的文件,你可能会遇到UnicodeDecodeError,因为在文本文件中可能夹杂了一些非法编码的字符。遇到这种情况,open()函数还接收一个errors参数,表示如果遇到编码错误后如何处理。最简单的方式是直接忽略:
    f = open('/Users/michael/gbk.txt', 'r', encoding='gbk', errors='ignore')

    decode:字符串解码,encoding:字符串编码
    bytes-(decode())-str(unicode)-(encode())-bytes
    字符串常用编码:utf_8,gb2312,gbk,cp936,gb18030
    当open文件出错时,设置参数打卡方式为二进制:'rb',再通过第三方库chardet来判断内容编码格式。
    示例:

    import chardet
    file = open('aa.txt','rb')
    f = file.read()
    chardet.detect(f)   #判断f内容编码,结果confidence时预估为结果编码的概率。
    
    • 1
    • 2
    • 3
    • 4
    数据类型判断:isinstance,issubclass

    isinstance函数可用来判断数据类型。
    第二个参数:float、int、dict等

    from types import  MethodType,FunctionType
    isinstance(2,float)		#False
    isinstance((2,3),(str,list,tuple))		#支持多种类型列表
    isinstance(m.test,MethodType)		# 判断‘m.test’是不方法
    #判断对象是否是这个类或者子类的对象
    class Foo:
        def __init__(self,name,age):
            self.name=name
            self.age=age
    class Son(Foo):
        pass
    obj=Son("xiaoming",18)
    print(isinstance(obj,Foo))
    # 执行结果:True
    
    #issubclass用来判断一个类是否是某个类的子类,返回的是一个bool类型数据
    class Foo:
        def __init__(self,name,age):
            self.name=name
            self.age=age
    class Son(Foo):
        pass
    obj=Son("xiaoming",18)
    print(issubclass(Son,Foo))
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    retry:重试

    通过装饰器方式装饰
    retry

  • 相关阅读:
    【云原生&微服务五】Ribbon负载均衡策略之随机ThreadLocalRandom
    java集合list map set
    SpringBoot 上传图片-指定目录按照日期存储
    中秋节礼物推荐蓝牙耳机!时尚又实用的蓝牙耳机盘点
    LeetCode每日一题——710. 黑名单中的随机数
    CMake
    软考高级-系统架构师-案例分析-案例题1
    接口测试需求分析
    Python21day学习---numpy生成数组的若干方法----day19
    多条件组合查询SQL语句
  • 原文地址:https://blog.csdn.net/me_to_007/article/details/126604964