博客集合
迭代器 & 生成器
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操作
列表生成式
递归
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)
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)
运算符及优先级
优先级:
“元”算术运算符概念:
算数运算符概念:
判断相关: