python基础热知识5

numpy

1.获取NumPy数组中N个最大值的索引

argsort()将arr中的元素从小到大排序后提取对应的索引index

# 获取NumPy数组中2个最大值的索引
import numpy as np
arr = np.array([1, 3, 2, 5, 4])
print(arr.argsort()[-2:][::-1])

2.numpy & scipy

  • NumPy只包含数组数据类型和最基本的操作:索引,排序,重新整形,基本元素函数等等。
  • 所有数字代码都将储存在SciPy中。然而,NumPy的一个重要目标是兼容性,因此NumPy试图保留其前任任何一个支持的所有功能。
  • NumPy包含一些线性代数函数,而SciPy包含更多全功能的线性代数函数以及许多其他数值算法。
  • 如果你使用python进行科学计算,你应该安装NumPy和SciPy。scipy中提供更多的函数功能。

3.hash(散列函数)

散列函数(Hash function)又称散列算法、哈希函数,是一种从任何一种数据中创建小的数字“指纹”的方法。

散列函数把消息或数据压缩成摘要,使得数据量变小,将数据的格式固定下来。该函数
将数据打乱混合,重新创建一个叫做散列值
指纹。散列值通常用一个短的随机字母和数字组成的字符串来代表

4.类方法、类实例方法、静态方法

  • 类方法: 是类对象的方法,在定义时需要在上方使用 @classmethod 进行装饰,形参为cls,表示类对象,类对象和实例对象都可调用
  • 类实例方法: 是类实例化对象的方法,只有实例对象可以调用,形参为self,指代对象本身
  • 静态方法: 是一个任意函数,在其上方使用@staticmethod 进行装饰,可以用对象直接调用,静态方法实际上跟该类没有太大关系

5.描述抽象类和接口类的区别和联系

  1. 抽象类:规定了一系列的方法,并规定了必须由继承类实现的方法。由于有抽象方法的存在,所以抽象类不能实例化。可以将抽象类理解为毛坯房,门窗,墙面的样式由你自己来定,所以抽象类与作为基类的普通类的区别在于约束性更强
  2. 接口类:与抽象类很相似,表现在接口中定义的方法,必须由引用类实现,但他与抽象类的根本区别在于用途:与不同个体间沟通的规则,你要进宿舍需要有钥匙,这个钥匙就是你与宿舍的接口,你的舍友也有这个接口,所以他也能进入宿舍,你用手机通话,那么手机就是你与他人交流的接口
  3. 区别和关联
  • 接口是抽象类的变体,接口中所有的方法都是抽象的,而抽象类中可以有非抽象方法,抽象类是声明 方法的存在而不去实现它的类
  • 接口可以继承,抽象类不行
  • 接口定义方法,没有实现的代码,而抽象类可以实现部分方法
  • 接口中基本数据类型为static而抽象类不是

6.python内存管理机制

内存管理机制: 引用计数、垃圾回收、内存池
具体推荐看这篇:https://foofish.net/python-gc.html

7.python内存管理调优手段

1、手动垃圾回收
2、调高垃圾回收阈值
3、避免循环引用

8.内存泄漏

内存泄漏指由于疏忽或错误造成程序未能释放已经不再使用的内存。内存泄漏并非指内存在物理上的消失,而是应用程序分配某段内存后,由于设计错误,导致在释放该段内存之前就失去了对该段内存的控制,从而造成了内存的浪费。

✏有 del() 函数的对象间的循环引用是导致内存泄露的主凶。不使用一个对象时使用: del object 来删除一个对象的引用计数就可以有效防止内存泄露问题

✏通过Python扩展模块gc 来查看不能回收的对象的详细信息

✏可以通过 sys.getrefcount(obj) 来获取对象的引用计数,并根据返回值是否为0来判断是否内存泄露

9.函数调用的参数传递方式——值传递 or 引用传递

!分情况

【不可变参数——值传递】
像整数和字符串这样的不可变对象,是通过拷贝进行传递的,因为你无论如何都不可能在原处改变不可变对象

【可变参数——引用传递】
比如像列表,字典这样的对象是通过引用传递、和C语言里面的用指针传递数组很相似,可变对象能在函数内部改变

10.缺省参数 *args **kwargs

缺省参数指在调用函数的时候没有传入参数的情况下,调用默认的参数,在调用函数的同时赋值时,所传入的参数会替代默认参数

【*args】是不定长参数,它可以表示输入参数是不确定的,可以是任意多个

【kwargs】是关键字参数,赋值的时候是以键值对的方式,参数可以是任意多对在定义函数的时候不确定会有多少参数会传入时,就可以使用两个参数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Taverry

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值