python基础及知识扩展

一、背景

最近老是能看到抖音上给推荐一个博主的python视频,主要介绍python中各种的技巧,今天(五一期间)专门抽出时间来进行下总结。

二、知识整理

1.数字相关操作(太基础,简要写只写运算符和内置函数)

  • 计算商 //
  • 计算余数 %
  • 计算次幂 **
  • 求绝对值 asb(-5)
  • 将10进制转为16进制 hex(10)—>0xa (0x表示这是16进制)
  • 2进制转10进制 int(‘1001’, base=2) —>9 (不太明白base)
  • 求字符’A’的ascill码,ord(‘A’)
  • 求计算机中数字对应的ascill码(计算机中的字符都对应着的是数字)char(65)—>‘A’[]

2.列表

  • 索引一个列表,如访问第一个元素,a[0]
  • 切片访问 如:[:2:]
  • 插入列表1 在列表末尾插入‘a’ —>append(‘a’) *
  • 插入列表2 向列表中的某一位置插入元素 a.insert(index, object)
  • 插入列表3 批量加入元素,列表之间可以使用运算符 +
  • 插入列表4 批量插入元素,list.extend([1,2,3])
  • 列表删除一个元素(最后一个) pop()
  • 列表删除指定元素 list.remove(obj)
  • 删除指定位置的元素 del a[1]
  • 修改元素 a[1] = 10
  • 快速克隆列表中的元素(列表乘法 ) a=[1,2,3] a3
  • 实现列表中嵌套一个列表 a[1] = [1,2,3]
  • 列表排序 从小到大 a.sort()
  • 列表排序 从大到小 a.sort()

3.转义

解释:一个 \ 加字符,组合后单个字符去原来字面意义,被赋予一个新的功能

  • 响铃 \a
  • 退格 \b
  • 换行 \n
  • 纵向制表符 \v
  • 横向制表符\t
  • 回车 \r
  • 换页 \f

4.字符串与数字

  • 支持运算符 + 如:‘hell’ + ‘o’
  • 支持乘 * 如:“haha” * 3
  • 支持无运算符 ,如: ‘he’ ‘llo’
  • ord() 和 char() 上面有写
  • 字符串转换成字节,bytes(obj, encoding=‘utf-8’)
  • 字节转换成字符串 obj.decode(encoding=‘utf-8’)

5.字符串打印格式

  • “this is {}”.format(‘aaa’)
  • 保留小数点后2位:“{:.2f}”.format(3.1415)
  • 占位然后补齐:“{:0>3d}”.format(5)
  • “{:.1%}”.format(0.718)

6.字符串

  • str.join([‘hello’, ‘world’])
  • 分割,str.split()
  • 替换字符,replace() 如:‘aaabbb’.replace(‘a’, ‘’) —>‘bbb’
  • 字符串去除开头和结尾的空格 str.strip()

7.python领域

  • 爬虫:urllib、beautifulsoup4(从html或者xml中提取数据的)、第三方爬虫——>requests、scrapy、pyspider
  • 自动化办公:excel——>xlwings、wlsxweiter、xlrd、openpyxl;PPT——>pywin32com、pptx;word——>docx、pypiwin32;邮件——>smtplib、imaplib、email;
  • 运维和测试:运维——>psutil:能够获取运行的进程和系统利用率、内存、cpu、网络等;测试——>unitest、pytest
  • web开发:Django、 flask
  • AI:视觉领域:OpenCV;自然语言处理:Gensim、NLTK、Transformer

8.python对象类型

  • 不可变类型:整形、浮点型、字符串、元组
  • 可变类型:列表、字典
    只有不可变的类型才是可哈希的

9.类和属性

  • 创建类,用关键字class,具体略。
  • 创建公开属性和内部属性
class Dog(object):
	# 假设统计年龄从2000年开始
	begin = 2000

    def __init__(self, name):
        self.name = name  # 创建一个对外公开的属性
        self.__coller = 'write'  # 创建一个仅内部使用的属性
  • 类属性可以直接由类访问,如Dog.begin

  • 类方法:@classmethod 标记类方法,第一个参数cls表示类对象,类方法要求访问的属性必须是类属性。

  • 静态方法:@staticmethod标记,静态方法不需要有类对象的变量,访问的属性是全局属性

begin = 2000  # 全局变量
class Dog(object):

    begin = 2000  # 类变量

    def __init__(self, name):
        self.name = name  # 创建一个对外公开的属性
        self.__coller = 'write'  # 创建一个仅内部使用的属性

    @classmethod
    def get_age(cls, birthday):
        return birthday - cls.begin
        
	@staticmethod
	def get_age(birthday):
        return birthday - begin
  • 类的继承:class A(A1):继承了类A1,可以直接使用A1里面的方法,继承时,先走基类init的方法
  • 复用类父类的init方法:super().init()
class A1(object):
    def __init__(self, name):
        print('is', name)

class A(A1):
    def __init__(self, name):
        super().__init__(name)
        print('复用A1的init')

if __name__ == '__main__':
    A('ds')
  • 覆盖(重写)基类的方法:两个前提:方法名必须和基类中的方法名相同,参数也一致,然后进行重写

10.鸭子类型

只需要里面有那个方法即可,不需要是子类

class Dog:

    def shout(self):
        print('Dog is shouting ')

class Car:

    def shout(self):
        print('Car is shouting')

def f(obj):
    obj().shout()
f(Dog)
f(Car)

11.各种可能用到的函数或装饰器

  • 求和:reduce()
from functools import reduce

res = reduce(lambda x,y: x+y, [1,2,3,4,5,6])

print(res)

# 结果是21
  • 枚举:enumerate(names)
l = ['苹果','香蕉','梨子']

for i, fruit in enumerate(l):
    print(i,fruit)
    
# 0 苹果
# 1 香蕉
# 2 梨子
  • zip()
name = ['高圆圆', '孙俪', '赵丽颖']
hight = [1.68, 1.62, 1.69]

print({n:h for n, h in zip(name, hight)})
  • @property装饰器
    意义:将一个方法的调用方式变为"属性调用",代替get()和set()方法,使获取值和赋值更简单。
class Empoloyee:
    def __init__(self, name, salary):
        self.__name = name
        self.__salary = salary

    @property
    def salary(self):

        return self.__salary

    @salary.setter
    def salary(self, salary):
        if 2000 < salary < 30000:
            self.__salary = salary
        else:
            print("薪水在2000-30000范围内")

emp = Empoloyee('张三', 2000)

print(emp.salary)
emp.salary = 5000
print(emp.salary)
emp.salary = 0
print(emp.salary)

# 运行结果如下:
# 2000
# 5000
# 薪水在2000-30000范围内
# 5000

12.迭代器

13.装饰器

14.生成器

形象解释,就像一个马拉松选手,跑跑还能停下喝口水。
是一个带yield的特殊函数

def f():
    a = ['hello', 'world']

    for w in a:

        yield w   # 有yield所以是生成器

        print('yes')


go = f()

print(next(go))
print(next(go))
# print(next(go))  # 这一次就会报错,因为循环终止了

15.python使用习惯

  • 不要将空列表作为函数默认参数
def add_names(name, names=[]) # 不可取!因为函数的默认参数只会在第一次调用时才会评估
def add_names(name, names=None) # 可取!

15.python常用的第三方包

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值