- 博客(18)
- 问答 (1)
- 收藏
- 关注
原创 简谈Python3关键字nonlocal使用场景
欢迎关注微信公众号:CodeWorks问题或建议,请公众号留言,欢迎非抬杠式讨论下面是之前提过的有待提升效率的计算移动平均的方法:def make_averager(): series = [] def averager(new_value): series.append(new_value) total = sum(series) ...
2019-12-10 14:30:08
208
原创 简谈Python3中的闭包
欢迎关注微信公众号:CodeWorks问题或建议,请公众号留言,欢迎非抬杠式讨论闭包是指延伸了作用域的函数,其中包含函数定义体中引用、但是不在定义体中定义的非全局变量。闭包(closure)是函数式编程的重要的语法结构。闭包也是一种组织代码的结构,它同样提高了代码的可重复使用性。当一个内嵌函数引用其外部作用域的变量,我们就会得到一个闭包. 总结一下,创建一个闭包必须满足以下几点:必...
2019-12-10 09:48:13
195
原创 简述Python中变量作用域的规则
介绍这一题目的目的是引出python中较为高级的话题—闭包和装饰器。在下面的例子中,定义并测试一个函数,它读取两个变量的值:一个是局部变量a,是函数的参数; 另一个是变量b,这个函数没有定义它。>>> def f1(a):... print(a)... print(b)...>>> f1(1)1Traceback (most re...
2019-12-08 09:33:46
249
原创 如何优雅滴在手机端跑Python代码
本文重点围绕苹果设备,给大家描述一下小编自己如何在苹果移动设备上玩转Python代码的。按照推荐指数由高到低给大家推荐相关工具。Pythonista与一般的python移动端软件不同,它是一款安装在手机上的Python IDE软件,推荐指数4.5星。扣掉的0.5星是因为软件略贵(9.99刀)。该软件可以在苹果移动设备上提供几乎完整的Python开发环境,软件里有很多的demo程序,包括了游...
2019-11-15 11:54:01
865
1
原创 Python中如何优雅的使用assert断言
什么是assert断言Assert statements are a convenient way to insert debugging assertions into a program.断言声明是用于程序调试的一个便捷方式。断言可以看做是一个debug工具,Python的实现也符合这个设计哲学,在Python中assert语句的执行是依赖于__debug__这个内置变量的,其默认值为...
2019-11-14 20:34:59
389
原创 神经网络中为什么不能将权重初始值设置为一样的值
先说结论,如果权重初始值设为0的话,将无法正确进行学习。这是因为在误差反向传播法中,所有的权重值都会进行相同的更新。比如,在2层神经网络中,假设第1层和第2层的权重为0。这样一来,正向传播时,因为输入层的权重为0,所以第2层的神经元全部会被传递相同的值。第2层的神经元中全部输入相同的值,这意味着反向传播时第2层的权重全部都会进行相同的更新。因此,权重被更新为相同的值,并拥有了对称的值(重复的值)...
2019-11-12 10:16:59
2103
原创 Git分支管理策略及简单操作
前几天整理了一下之前项目的开发代码,当时使用了Git来进行代码管理。虽然本人熟悉常用的Git操作,但是对分支的管理经验非常欠缺。拿这个项目来说,在项目中有不下20个分支,每个分支间的继承关系相当之混乱,非常不利于代码的安全管理。因此,通过在网络上的学习,总结了一下关于Git分支管理的策略方法,供后续回顾学习。当然必须承认,代码分支管理策略有很多种,不局限于以下介绍。但是下面介绍的这个分支管理策略...
2019-10-10 17:52:33
244
原创 浅析Python中列表操作之*和*=
初学Python时总是会将a*=n理解为a=a*n,稍微深入后就会知道在Python中的不同,其中*调用__mul__ ,而*=调用__imul__ 。对于list对象也支持乘法操作,截止到Python3.7版本,上述仍然是成立的。我们知道list是由C实现的,所以真正的底层调用肯定是C的实现。观察list对象的C实现的源码我们会知道乘法*操作调用list_repeat,*=会调用list_in...
2019-10-07 13:38:36
1356
原创 浅析Python中的列表和元组
区别列表是动态数组,它们可变且可以重设长度(改变其内部元素的个数)。元组是静态数组,它们不可变,且其内部数据一旦创建便无法改变。元组缓存于Python运行时环境,这意味着我们每次使用元组时无须访问内核去 分配内存。这些区别揭示了两者在设计哲学上的不同:元组用于描述一个不会改变的事物的多个属性,而列表可被用于保存多个互相独立对象的数据集合。动态数组–列表列表可以改变大小及内容不同,列...
2019-10-07 13:30:01
158
原创 神经网络的学习为何要设定损失函数?
这里所说的“学习”是指从训练数据中自动获取最优权重参数的过程。学习的目的就是以该损失函数为基准,找出能使它的值达到最小的权重参数。可能会有人问:我们想获得的是能提高识别精度的参数,特意再导入一个损失函数不是有些重复劳动吗?既然我们的目标是获得使识别精度尽可能高的神经网络,那不是应该把识别精度作为指标吗?听起来很有道理!对于这一疑问,我们可以根据**“导数“**在神经网络学习中的作用来回答。 ...
2019-10-01 00:15:11
1102
原创 人生苦短,我用tldr
对于程序员来说,长时间不使用某些命令难免会有生疏,此时如果使用man命令可能会让你崩溃,因为文档实在是Too Looooong。那么有没有解决方案呢?其中比较有名的就是tldr。▍tldr是什么(chiefly Internet slang) Initialism of too long; didn’t read. Used to indicate that one did not r...
2019-09-16 10:47:52
226
原创 如何查看Linux服务器的物理CPU、逻辑CPU和CPU核数
Linux/UNIX下的哲学核心思想是’一切皆文件’。硬件信息也记录在了文件中。通过cat /proc/cpuinfo 来查看CPU相关详细信息。vendor id 如果处理器为英特尔处理器,则字符串是 GenuineIntel。processor 包括这一逻辑处理器的唯一标识符。physical id 包括每个物理封装的唯一标识符。core id 保...
2019-09-13 01:34:18
4428
原创 你可能不知道的几个IPython使用技巧
IPython 是一个 Python 的交互式 Shell,比默认的Python Shell 好用得多,支持变量自动补全,自动缩进,支持 Bash shell 命令,内置了许多很有用的功能和函数,下面介绍它的几个使用技巧。▍特殊符号? :放在被查方法或者命令的前后,一个?查看详细信息。??可以查看源代码(如果有)。* :通配符,可以放在名字中间,结合?一起,补全功能比tab键还强大。!...
2019-09-08 23:42:26
115
原创 神经网络的激活函数为什么要使用非线性函数?
有人说这曾经是一道面试题!我没说过这句话,但是感觉挺有道理 — 鲁迅▍什么是激活函数在神经元中,输入的inputs通过加权求和,然后被作用了一个函数,这个函数就是激活函数 Activation Function。激活函数在神经网络中的位置如图所示:▍为什么要用非线性函数要解释这个问题,可以反过来思考一下,为什么激活函数不能使用线性函数。如果使用线性函数,每一层输出都是上层输入的...
2019-09-08 23:12:23
9472
1
原创 Python中进行None判断时,为什么用is而不是==
「is和None区别在哪里」is比较的是对象标识符,用来检查对象的标识符是否一致,即两个对象在内存中的地址是否一致。在使用a is b的时候,相当于是做id(a)==id(b)判断。==比较两个对象的值是否相等,相当于调用__eq__()方法,即a==b等同于a.__eq__(b)。「进行None判断时,为什么用is」▍这在PEP8中有所规定“Comparisons to sin...
2019-09-08 22:02:00
4855
原创 Python中的单下划线和双下划线使用场景
单下划线单下划线用作变量最常见的一种使用场景是作为变量占位符,使用场景明显可以减少代码中多余变量的使用。为了方便理解,_可以看作被丢弃的变量名称,这样做可以让阅读你代码的人知道,这是个不会被使用的变量,e.g.。for _, _, filenames in os.walk(targetDir): print(filenames) for _ in range(100)...
2019-09-08 21:28:41
223
原创 爬虫攻防
爬虫攻防1 封锁间隔时间破解Scrapy在两次请求之间的时间设置是DOWNLOAD_DELAY。如果不考虑反爬虫的因素,该值当然越小越好。如果DOWNLOAD_DELAY设为0.001,也就是每1毫秒请求一次网页,这简直非人类干的事情。有些网站会检测一个ip的访问时间,异常情况下会封锁该ip2 封锁Cookies众所周知,网站是通过Cookie来确定用户身份的,Scrapy在爬取数据时使用同一个C...
2018-02-25 18:02:51
368
原创 git保留两个repo的commit并进行合并
以往的合并时首先要删除repo的.git文件夹,然后重新add-commit-push。带来的问题是会丢失某一个仓库的提交信息,不利于时光倒退。经过摸索终于实现了保留两个仓库提交信息的合并方法。介绍如下:比如要将DownloadPicsBySeleniumAndPhantomJS这个项目合并到Web-Spider中,终端中执行:接下来解决merge冲突即可(可以尝试使用mergetool),如有需...
2018-02-13 02:41:58
1164
空空如也
MacOS里的dmg安装文件带密码,是如何实现的?可否删除密码活着对密码进行修改?
2017-08-30
TA创建的收藏夹 TA关注的收藏夹
TA关注的人