Python 基础知识点


迭代器 & 生成器

在这里插入图片描述
在这里插入图片描述


Python 魔法函数实现单例模式

class Earth:
    __instance = None # 定义一个类属性做判断
    
    def __new__(cls):
        if cls.__instance is None:

            cls.__instance = object.__new__(cls)
            return cls.__instance
        else:
            return cls.__instance

if __name__ == '__main__':
	a = Earth()
	b = Earth()
	
	print(id(a)) # 输出:2048736671248
	print(id(b)) # 输出:2048736671248

Python中__del__函数的实现

在这里插入图片描述


圆的均匀分布实现代码及逻辑分析

圆内的均匀采样


Python Map操作

Map 操作


列表生成式

python——列表生成式


递归

def digui(a):
    if a <= 1:
        return a
    
    return digui(a-1) * a

print(digui(5)) 
# 输出:120

args, kwargs参数的使用

  • *args --> List 列表
  • ** kwargs --> Dict 字典
'''
    arg1: 位置参数
    *args: 可变参数
    **kw:关键词参数
'''
def printinfo(arg1, *args, **kw):
    print(arg1) # 1
    
    for var in args: # 2
        print(var)

    print(kw['abc']) # 3

printinfo(5, 70, 60, 50, abc=5)

结果:
在这里插入图片描述


sort、sorted、lambda 匿名函数

  • sort 针对列表,
  • sorted 针对可迭代对象,例如:列表 & 字典 & 元组等。
    在这里插入图片描述
# 示例0: 针对字典和元组进行排序讨论。
a = {'1':2, '2':1} # dict
b = (2, 1, 3) # tuple

print("a id:", id(a))
print("a sorted:", sorted(a))
print("a sorted id:", id(sorted(a)))
print('\n')
print("b id:", id(b))
print("b sorted:", sorted(b))
print("b sorted id:", id(sorted(b)))

结果:
在这里插入图片描述

# 示例1:lambda 对于多层列表的排序
a=[[[10, 10], [0, 0]], [[6, 5], [6, 4], [3, 7], [2, 8]]]
print(a)

x = sorted(a, key=lambda a: a[0][0], reverse=False)
print("按照首字符正序排列:"+str(x))
x = sorted(a, key=lambda a: a[0][1], reverse=True)
print("按照首字符逆序排列:"+str(x))
x = sorted(a, key=lambda a: a[1][0], reverse=False)
print("按照尾字符正序排列:"+str(x))
x = sorted(a, key=lambda a: a[1][1], reverse=True)
print("按照尾字符逆序排列:"+str(x))

结果:
在这里插入图片描述

# 示例2:lambda args 用法
sumary = lambda arg1, arg2: arg1 + arg2
print(sumary(10, 20))
func = lambda *args: sum(args)
print(func(1, 2, 3, 4, 5)) 

结果:
在这里插入图片描述


Set 代码集合

x = {"banana", "apple", "cherry"}
y = (2, 1, 3)
z = [2, 1, 3]
print(id(y))
print(id(sorted(y)))
print(id(z.sort()))

x.add('adc')
y = {"google", "baidu", "apple"}
print(x & y)
print(x | y)
print(x - y)
print(x ^ y)

x.update(y)
print(x)

结果:
在这里插入图片描述


Python 私有属性的“伪私有”

class Site:
    def __init__(self, name, url) -> None:
        self.name = name
        self.__url = url
    
    def who(self):
        print('name: ', self.name)
        print('private url: ', self.__url) 

    def __foo(self):
        print('private way!')

    def foo(self):
        print('public way!')
        self.__foo()

x = Site('老马的程序人生', 'https://blog.csdn.net/LSGO_MYP')
# 私有属性和函数的“伪私有
x.who()
x.foo()

结果:
在这里插入图片描述


Python 深浅拷贝

import copy
l=[1,2,3,[4, 5]]

l1=l #赋值
l2=copy.copy(l) #浅拷贝
l3=copy.deepcopy(l) #深拷贝
l[3].append(6) 

print(l) 
print(l1)
print(l2)
print(l3)
结果:
[1, 2, 3, [4, 5, 6]]      #l[3]添加一个元素6
[1, 2, 3, [4, 5, 6]]      #l1跟着添加一个元素6
[1, 2, 3, [4, 5, 6]]      #l2跟着添加一个元素6
[1, 2, 3, [4, 5]]         #l3保持不变

示例图:
在这里插入图片描述


列表赋值注意点 --》地址保持不变

a = [0, 1, 2]
x = [a]*4  # [a]*4 --》4个指针引用原数组
print(x)

x[0][0] = 1  # 指针指向母地址,调用全部一起改变
print(x)

print(hex(id(x[0][0])))
print(hex(id(x[1][0])))

结果如下:
在这里插入图片描述

在这里插入图片描述


Opencv-python 读取中文路径

import cv2
import  numpy as np
 
def cv_imread(file_path):
    cv_img = cv2.imdecode(np.fromfile(file_path,dtype=np.uint8),-1)
    return cv_img
 
imgurl='测试.jpg'
img1 = cv_imread(imgurl)
cv2.imencode('.jpg', img1 )[1].tofile(imgurl)

opencv 读取中文路径


Python 随机函数总结

#!/usr/bin/python
# -*- coding: UTF-8 -*-

import random

print( random.randint(1,10) )        # 产生 1 到 10 的一个整数型随机数  
print( random.random() )             # 产生 0 到 1 之间的随机浮点数
print( random.uniform(1.1,5.4) )     # 产生  1.1 到 5.4 之间的随机浮点数,区间可以不是整数
print( random.choice('tomorrow') )   # 从序列中随机选取一个元素
print( random.randrange(1,100,2) )   # 生成从1到100的间隔为2的随机整数

a=[1,3,5,6,7]                # 将序列a中的元素顺序打乱
random.shuffle(a)
print(a)

运算符及优先级

优先级:
在这里插入图片描述


“元”算术运算符概念:
在这里插入图片描述


算数运算符概念:
在这里插入图片描述


判断相关:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值