当前位置: 首页 > news >正文

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/

查看模块版本号

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

import numpy as np
import pandas as pd
# 查看模块版本号
np.__version__

更新第三方模块

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

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

帮助文档

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

忽略警告内容

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)

动态变量

locals()['aa'] = 1	#使用python内置函数:locals()
aa
#out:1
locals()['aa']
#out:1
#或者也可以用字典
d = {}
d['aa'] = 1
d['aa']
#1,相对用字典可能灵活点。

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)

显示抛出异常

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

raise
if [condition]:
	raise '异常显示内容'

查看地址引用次数

当一个对象没有任何引用,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有四层引用

编码

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()

遇到有些编码不规范的文件,你可能会遇到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时预估为结果编码的概率。

数据类型判断: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))

retry:重试

通过装饰器方式装饰
retry

相关文章:

  • centos设置root免密自动登陆
  • JuiceFS 在多云存储架构中的应用 | 深势科技分享
  • 【LeetCode】思维向题笔记总结(持续更新)
  • springboot+vue农产品销售配送网站
  • ISE的FPGA程序加载与固化——Omapl138/TMS320C6748+FPGA核心板
  • SAP ABAP 定义事件以及处理事件
  • 西瓜书-2习题
  • 中国LED封装行业发展前景预测与投资战略规划分析报告
  • 传出神经系统分为哪两类,传出神经的分类与功能
  • [最新]ubuntu22.04安装kubernetes1.25 k8s1.25
  • 个人整理前端代码规范
  • 中国图书零售连锁行业市场前瞻与投资战略规划分析报告
  • Linux开发工具 - vim篇
  • python各种编辑器、APP、软件下载
  • Acwing 1169糖果 【初识差分约束 | 最长路】
  • “Material Design”设计规范在 ComponentOne For WinForm 的全新尝试!
  • “大数据应用场景”之隔壁老王(连载四)
  • 【Under-the-hood-ReactJS-Part0】React源码解读
  • Computed property XXX was assigned to but it has no setter
  • Laravel 中的一个后期静态绑定
  • PAT A1050
  • PHP的类修饰符与访问修饰符
  • Spark VS Hadoop:两大大数据分析系统深度解读
  • vue的全局变量和全局拦截请求器
  • 翻译 | 老司机带你秒懂内存管理 - 第一部(共三部)
  • 讲清楚之javascript作用域
  • 前端每日实战 2018 年 7 月份项目汇总(共 29 个项目)
  • 前端性能优化--懒加载和预加载
  • 首页查询功能的一次实现过程
  • 微信开源mars源码分析1—上层samples分析
  • 微信支付JSAPI,实测!终极方案
  • 我的面试准备过程--容器(更新中)
  • 在electron中实现跨域请求,无需更改服务器端设置
  • 06-01 点餐小程序前台界面搭建
  • 【干货分享】dos命令大全
  • ​DB-Engines 11月数据库排名:PostgreSQL坐稳同期涨幅榜冠军宝座
  • ​云纳万物 · 数皆有言|2021 七牛云战略发布会启幕,邀您赴约
  • #在 README.md 中生成项目目录结构
  • $var=htmlencode(“‘);alert(‘2“); 的个人理解
  • (0)Nginx 功能特性
  • (4)(4.6) Triducer
  • (AtCoder Beginner Contest 340) -- F - S = 1 -- 题解
  • (iPhone/iPad开发)在UIWebView中自定义菜单栏
  • (Redis使用系列) Springboot 实现Redis消息的订阅与分布 四
  • (附源码)SSM环卫人员管理平台 计算机毕设36412
  • (牛客腾讯思维编程题)编码编码分组打印下标题目分析
  • (一)Thymeleaf用法——Thymeleaf简介
  • (转)Java socket中关闭IO流后,发生什么事?(以关闭输出流为例) .
  • (转)JAVA中的堆栈
  • (转)linux自定义开机启动服务和chkconfig使用方法
  • (转)ORM
  • (轉貼) 2008 Altera 亞洲創新大賽 台灣學生成果傲視全球 [照片花絮] (SOC) (News)
  • *_zh_CN.properties 国际化资源文件 struts 防乱码等
  • . NET自动找可写目录
  • ..回顾17,展望18