自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(24)
  • 收藏
  • 关注

原创 python的三目运算操作

C和C++中有三目运算的操作,它可以简化if-else的操作,在条件和运算很简短的时候,用三目运算是非常方便的,那python有三目运算吗?看过上面的例子,其实大家应该都明白怎么去使用python的三目运算了,但是我还是做如下的解释,对比一下正常的if-else语句会更加清楚。python中,对于简单的条件语句,可以尽量用三目运算去处理。我举一些例子,大家应该一看就明白了。

2023-05-25 12:02:14 150

原创 给C++新手的一些开发建议(一)

这种情况下其实是不推荐用std::endl的,因为std::endl会实时的去刷buffer,在循环体内使用会有性能上的开销。这样写代码思路会很清晰,你不需要关心数据是怎么获取,你只需要把整个容器扔进去,以及给怎么处理数据定个标准。第二条:在循环中使用 std::endl。第五条:在std数组上使用C数组。第三条:对于for循环的使用。第四条:重写标准算法。

2023-05-24 18:21:46 113

原创 python如何分离文件名和扩展名

还有一种方式是我最推荐的,我之前写过《在python中如何去检测文件是否存在?作为新手,如果需要用python将文件名和扩展名分开,你会怎么处理?大家有什么想法也可以相互交流相互学习。

2023-05-17 21:30:45 984

原创 python的全局变量和局部变量

但是第二次传入False就要小心了,它会报错(UnboundLocalError: local variable ‘x’ referenced before assignment),原因是虽然control是False,后面的语句不会运行到,但是对于python而已,即使没有运行到x的赋值,return x的时候,会把x当初局部变量,而这时的局部变量x没有进行赋值操作。对于z值其实也没有异议,这里打出值来,就是想让大家看看,z值没赋值之前是empty,等两次赋值,值是基于最后一次赋值。

2023-05-15 18:21:29 215

原创 在python中如何去检测文件是否存在?

如代码注释,虽然前面的代码检查了文件的存在性,但是可能后面这个文件不存在了,这时候去打开文件就会失败了。所以我们需要对代码进行优化,做一个异常处理。其实代码还能再优化,我个人建议所有的文件操作,尽量使用pathlib。

2023-05-13 13:20:13 760

原创 聊聊C++的RAII

上面的代码很简单,就是一个Animal父类,其他三个类继承了Animal。RAII其实就是依托栈数据的特性,在生命周期结束后,回去调用类的析构函数,然后你在析构函数中去维护内存的释放。RAII,英文全称是 Resource Acquisition Is Initialization,直译为资源获取即初始化,是 C++ 所特有的资源管理方式。这里的animal是放在栈中的,当animal 消亡的时候,会调用AnimalWrapper类中的析构函数,从而释放了之前创建的对象。

2023-05-12 16:01:47 49

原创 通过python画三维图

大家可以自己运行一下,具体我把画三维图的接口说明都写在代码后面的注释里。python画的3d图。

2023-05-10 20:08:00 874

原创 用python画二维图

如题,先从网站上爬取数据,然后将数据画出来。python画二维图。

2023-05-09 21:47:42 545

原创 用面向对象的方式来开发python

python可以用面向对象的方式进行开发,我会通过如下代码,一次性说明白,至少对python初学者会有一定的帮助。1、python可以像其他面向对象语言一样,弄一个父类,然后子类继承父类的函数,也可以子类覆盖父类的同名函数。代码只是学习交流使用,有些接口设计只是为了展示其使用的方式,实际开发可能不会这么使用,比如静态函数,类函数等。4、类中的成员变量其实可以直接通过实例获取,但是建议通过对外函数获取。2、子类如何调用父类的init函数,我的代码中涉及到两种方式。6、怎样定义类函数,怎样使用类函数。

2023-05-05 23:19:15 44

原创 C++的三大容器之无序容器

无序容器的类型就是在有序容器基础上加个unordered前缀,分别是:unordered_set/unordered_multiset、unordered_map/unordered_multimap,平时项目中,不知道大家碰到调用无序容器的概率是多少?我印象中,好像很难碰到这种场景。无序容器的用法也和有序容器一样,不同点在于无序容器的内部数据结构是散列表。

2023-05-04 20:34:28 132

原创 C++的三大容器之有序容器

最后我想提醒一下:对于有序容器,在每次插入数据的时候都会自动进行排序,所以当数据量很大的时候插入位置的查找,树的旋转都会影响性能。所以如果你对数据没有实时排序的要求,建议你使用vector,在最后做一次数据的排序。如果你对数据需要实时的排序,那只能用有序容器了。有序容器的元素在插入容器后会被按照某种规则自动排序,而C++的有序容器的实现通常是树结构(红黑树)。对于所有的有序容器来说,C++的基本类型都可以很完美的插入到容器中,但是对于自己定义的类型,你需要事先重载“<”操作符。容器的默认比较是小于。

2023-05-04 19:03:56 631

原创 C++的三大容器之顺序容器

这是因为当 vector 的容量不够的时候,它会去寻找一块两倍大小的新内存,然后把旧元素拷贝或者移动过去,最后把新数据插入进去。我记得当时的业务中需要在vector容器中进行大量的数据插入,等数据达到一定量级的时候,接口返回时间越来越长。最后找到是这个原因导致,通过reserve接口进行所需容器的空间预估,可以减少动态扩容的调用拷贝构造的次数,从而提高程序性能。虽然vector、deque、list和forward_list都可以进行动态的扩容,但是它们的机制是完全不同的。

2023-05-02 21:31:48 116

原创 C++的三大容器之认识容器

从上述结果看,建议自己定义的类,如果后期会有容器相关的操作,需要实现移动构造,当调用push_back插入数据的时候能提高性能。关于容器中的元素,不太建议存放指针,因为指针是间接持有数据,当容器生命周期结束后,其中存放的指针很容易被遗忘,导致内存泄漏。通常容器保存的元素是值语义,说白了就是容器存储的是元素的拷贝而非引用。所以当元素很大或者数量很多的时候,操作拷贝的开销会很大,性能会大打折扣。通俗讲容器其实就是C++对数据结构的抽象和封装,开发人员可以对所有的数据进行相同的操作。

2023-05-02 19:53:58 152

原创 通过pybind11来实现python调用C++接口(二)

相信大家应该都能掌握怎么让python调用C++的容器,以及class类。对于python调用C++接口的基础知识,可以参考我的博文:[通过pybind11来实现python调用C++接口(一)]。(https://blog.csdn.net/shouqi321/article/details/130439525)通过g++ pybind.cpp -std=c++11 -shared -fPIC。如果用class的方式,怎么调用呢?编译生成目标动态库。

2023-04-29 22:51:58 309

原创 通过pybind11来实现python调用C++接口(一)

好了,现在环境都应该是可以了,我们下一期讲讲怎么通过class的方式被python调用,以及如何使用C++常用的string,vector等标准容器。这条命令之后会产生一个动态库:pythondemo.cpython-310-x86_64-linux-gnu.so。有小伙伴很好奇,怎么样实现python调用C++接口?哈哈,手把手教程来了。

2023-04-29 12:52:11 750

原创 做个实验----在python中通过循环的方式计算1到n的累加和的计算性能谁最好

我们先聊一下while_loop和for_loop:这两个最大的区别在i这个变量的累加,对于while_loop接口所有的操作都在python中处理的,但是for_loop接口中变量i的+1操作其实在C语言中实现,所以对于for_loop接口处理的性能会高一些。最后一个直接通过数学公式直接得出结果,这个不难理解,效率应该是最高的,其实工作中有些性能的优化就是这么来的,所以为什么说高端玩家,玩的是高数。我们来玩个游戏,如果在python中计算1到n的累加和,用什么计算方式效率最高?

2023-04-28 22:36:44 479

原创 你需要改掉的Python开发习惯(五)

目前python3已经出现很久了,但是可能你的代码中还有大量的python2,这个时候迁移的工作量会很大,所以python2目前还是有一定的保有量在使用的。还有就是keys的变化,不再是一个copy,它仅仅是一个view。所以最后我想说,python3的变化是前所未有的,但是老项目用python2也很难直接签到python3。但事实是在.py文件边上有一些.pyc文件或者在__pycache__目录中,这些都是编译好的python文件,python确实是解释性语言,它的编译结果是字节码,而不是机器码。

2023-04-26 23:10:49 36

原创 你需要改掉的Python开发习惯(四)

但事实是用time.perf_counter()的精度要高于time.time(),因为perf_counter具有最高可用分辨率的时钟。具体原因也可以参考该文章:http://www.zzvips.com/article/197970.html。一般都会使用日志功能,因为可以设置日志的打印等级,来控制哪些类型的日志需要输出。建议是去掉"shell=True"

2023-04-25 22:27:43 60

原创 你需要改掉的Python开发习惯(三)

如果你不知道字典项,你需要获取每个键,再去通过键去获取值。1、对于用if bool 和 if len做判断,其实是很多余的。

2023-04-24 23:16:21 30

原创 你需要改掉的Python开发习惯(二)

是不是觉得很奇怪,跟想象的结果不一样,那是因为函数参数默认值是在函数定义的时候定义的,而不是函数执行的时候定义的。说白了,当第一次执行append(0)时,函数参数l=[],而当第二次执行append(1)的时候,函数参数l=[0]。上面的函数是求长度为 n * n 的 x, y的矩阵乘积,一眼望过去还是很难理解的。我们可以扩展一下,其实对于a == b做的是值的比较,而对于a is b做的是地址的比较。上面是对字典的操作,其他的如list,gen,set也都可以这样操作。

2023-04-23 22:00:10 32

原创 python通过for-in生成list和dictionary小技巧

【代码】python通过for-in生成list和dictionary小技巧。

2023-04-23 18:32:35 146 1

原创 你需要改掉的Python开发习惯(一)

如果wirte接口调用失败,抛出了异常,那close接口就永远都不会被调用。而如果使用with语句,可以确保抛出异常了也能关闭文件。上面的代码是在不停的接收一个从键盘输入的数字,但如果不小心输入ctrl+c,也会被异常捕获。最好的方式是使用正确的异常捕获类型。上面的代码其实没有问题,其他语言开发也是这么用的,但是我建议用with语句,它会自动调用close。3、同第二条,try-finally也可以做同样的处理。其实它是一个按位操作,正确的幂的操作符如下。4、使用正确的异常捕获。

2023-04-23 13:11:55 72 1

原创 嵌套if语句是否很好?

【代码】嵌套if语句是否很好?

2023-04-22 21:57:38 57 1

原创 当工具自动生成本可以直接生成数组但实际生成多个单个变量,后续使用想按照数组的方式访问。

4、这样可以最大限度的减少额外空间的申请。同时因为只是去读取数据,加个const会安全一些,如果需要写,可以去掉const。3、有没有方式可以像数组的方式进行访问呢?

2023-04-04 18:47:20 64

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除