自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

spirit的博客

千里之行始于足下

  • 博客(15)
  • 收藏
  • 关注

原创 Python语言实践分析 -- 闭包

闭包定义闭包(Closure)是词法闭包(Lexical Closure)的简称,是引用了自由变量的函数。这个被引用的自由变量将和这个函数一同存在,即使已经离开了创造它的环境也不例外。所以,有另一种说法认为闭包是由函数和与其相关的引用环境组合而成的实体。

2016-02-18 15:05:59 389

原创 Python语言实践分析 -- With语句

概述使用C++的人往往对其中的资源释放即析构由很深的印象,其本质是将资源的释放与变量的析构函数相结合,利用语言保证的析构函数的执行的确定性来进行资源清理。在Python中有与之类似的一种机制,即是With语句。 With语句作用于上下文管理器对象中,其使用方法如下:with open('temp','w') as f: f.write('a') #针对f进行操作f.write('b')结

2016-02-15 11:04:24 391

原创 Python语言实践分析 -- 默认参数

引子熟悉C++语言的可以知道,C++语言中的默认参数是写在函数声明中的,为语法糖,与函数的调用无关,是在函数调用的时候由编译器补齐参数然后进行调用。 而Python中的默认参数与其有相当大的不一样,如下例中的代码执行结果会是什么呢?def test_parameter(a, dfp=[]): dfp.append(a) print(dfp)test_parameter(1)tes

2016-02-14 17:09:51 432

原创 多个数排列形成最大值

数排列形成最大值标签(空格分隔): 编程题题目已知有一些数(大小不限定,不一定为个位数),如何将这些数排列在一起构成的数值最大?分析针对这个题目,最简单的办法就是通过全排列来查找最大值,不过我们可以看到依次选择最大的字面数来从左到右构成数即可保证最大值(因为所有能够形成的数的位数都是一样的,从左到右依次比较肯定能够满足最大),由于在从左到右依次选择时可能出现多条路径,因此需要考虑多种可能。解答def

2016-01-29 17:34:52 844

原创 Python语言实践分析 -- 包导入

Python语言实践分析 – 包导入标签(空格分隔): PythonPython语言实践分析 包导入Python中的包实践直接导入包导入模块import 导入__all__控制__init__py控制总结Python中的包与JAVA语言一样,Python中也有包的概念。Python中的包就是一个包含Python模块(就是python文件)的目录,作为与普通目录的区别,Pytho

2016-01-29 17:26:16 580

原创 《编写可读代码的艺术》读书笔记

《编写可读代码的艺术》标签: 代码能力 读书笔记编写可读代码的艺术第零部分 基本原则第1章 代码应当易于理解第一部分 表面层次的改进第2章 将信息装到名字里第3章 不会误解的名字第4章 审美第5章 该写什么样的注释第6章 写出言简意赅的注释第二部分 简化循环和逻辑第7章 把控制流变得易读第8章 拆分超长的表达式第9章 变量与可读性第三部分 重新组织代码第10章 抽取不相干

2016-01-28 23:23:18 459

原创 蒙特卡洛模拟方法

蒙特卡洛模拟方法蒙特卡洛方法(Monte Carlo method)是指的通过大量产生随机数的模拟方法来用于数值统计计算以获得问题的近似解。蒙特卡洛方法最简单的计算就是用于pi的计算。Pi的计算采用蒙特卡洛方法计算Pi就是使用随机产生点(x,y),x和y均为0~1之间的数值,然后判断该点和原点之间的距离,如果少于等于1则表示其位于圆圈内,由圆的面积公式即可得pi的值就近似等于圆圈内的概率与4的积。

2016-01-28 12:15:07 12660

原创 硬盘安装Ubuntu 15.10记录

这两天在Windows上安装Ubuntu,走了一些弯路,记录一下。一、硬盘安装Ubuntu:之前是准备制作一个U盘启动盘进行安装,然后启动始终不成功,然后根据网上的教程硬盘安装成功。步骤如下:1)准备相应软件,下载了Ubuntu15.10 DeskTop,EasyBCD软件;2)硬盘划分出两个分区,一个用于swap,另一个用于根目录/,也有针对boot、usr、tmp等每个

2016-01-25 21:34:28 524

原创 编程之美中CPU运行曲线题目(多核版本)

昨天完成了编程之美中的控制CPU运行曲线的题目,如果CPU为多核,导致其使用率最多只能用到某单核的100%,,而且可能会存在程序在核间转移等情况,所以针对多核需要一个单独的版本。有如下几点: 1)由于Python中GIL的存在,因此其多线程版本可能无效,而多进程则容易将不同进程分配到不同核上,容易一致; 2)每个核上直接启动一个单核版本程序是不行的,如果启动时间有误差或者中间执行误差,会导致不同步,因此需要在中间过程中一直同步; 如下是完成的代码,主进程仍然采用单核版本同步,其在计算使用率时将该值通过

2016-01-22 12:07:55 853

原创 编程之美中CPU运行曲线题目

在编程之美中有一道题目是将CPU的使用曲线按照要求显示,因此分析该题目的要点即是通过自己的程序控制CPU的使用率,按照要求合理的控制运算与Sleep的时间比。在这里默认特定条件下(当前CPU上只有本程序运行,其他程序运行的影响很小,可忽略不计),用Python程序实现了该程序,在电脑上执行,基本合乎要求,代码如下:#-*- coding: utf8 -*-"""控制CPU使用曲线"""

2016-01-21 18:40:46 884

原创 Python之模块搜索路径

近日重装系统,安装了Anaconda3,而其包含了numpy等,于是在ipython中numpy使用好好的,而使用IDLE中则直接出错,“ImportError: No module named 'numpy'”。一想,肯定是路径配置问题,直接分别在ipython和idle中分别打印sys.path,一看两者果然不一样,而Anaconda3将其附带的所有模块都安装到了其自己的文件夹内,而其安装的时候却没有对系统环境变量进行更新。

2016-01-21 12:32:07 4328

原创 Python之super函数

在面向对象编程时,继承是必不可少的,而定义时往往需要在子类的一些操作时(如初始化等),除了处理自己的部分外,还需要调用基类的对应同名函数。在Python中有两种方法,一种是直接使用父类的类名,另一种是使用super函数,这两者间有什么区别呢? 其实对于正常的单继承来讲,两者之间是没有区别的,其区别在于多继承的菱形继承情况中,相当于C++中的虚继承场景。

2016-01-20 14:03:31 953

原创 约瑟夫环问题

最近看到一道题目,也就是约瑟夫环的变体,题目如下:一只猫抓住了n只老鼠,其将老鼠排成一圈,依次按照1~m报数,报m值的吃掉,直到只剩下一只老鼠时,猫将其放生,求获生的老鼠编号。

2016-01-10 12:15:58 394

原创 Python之reload流程

Python中 import 只执行一次,后续的 import 仅仅在 sys.modules 中查找是否存在对应的模块对象,而对于源文件进行修改后想要立即重新导入该文件而不想整体重新执行程序时, reload 就在该处派上用途了。在实际中,测试代码修改结果,或者对于不能停止的服务需要动态改变运行行为 reload 是非常有用的。 reload 的执行流程如下所示:1)在 sys.modules 中查找到对应模块名的模块对象;2)针对该模块名的 执行文件 属性,找到对应文件并重新编译该文件执行;3)

2016-01-10 11:36:41 2530

原创 Python之import流程

在Python中重用代码的机制是导入模块(也即是import),对于该机制其内部的主要流程如下:1)在系统内部的sys.modules中以模块名作为字符串进行查找,是否已经存在该模块,如果存在则直接返回;2)当不存在时,则按照相应的文件搜索规则找到对应的py文件(其实还包括扩展等),编译为字节码;3)在sys.modules中以模块名字符串为key添加一个新建模块对象,然后依序执行该模块文件中的代码,依次将生成的对象添加到模块对象中;

2016-01-10 10:51:12 1286

空空如也

空空如也

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

TA关注的人

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