杂记:Python 两坑】的更多相关文章

近日写代码又遇到两个 Python 的坑,觉得值得记录. 递归传参问题 Python 里传参的实现是 assignment,但由于 Python 里都是对象,除了几个基本类型,assignment 基本都是引用的赋值,因此在递归里,你传的参数很可能就被下一层修改掉,例如: def some_func(A): # do your routines some_func(A) 如果这个A是个 mutable 的对象,而你的函数里对A有修改,那每一层递归都是修改同一个对象A. 我是在写一个解数独的程序时…
目录 1.1 踩坑案例 1.2 填坑和分析 1.2.1 从程序优化入手 1.2.2 从资源软硬限入手 1.4.1 技术关键字 下期坑位预告 代码示例支持 平台: Centos 6.3 Python: 2.7.14 代码示例: 菜单 - Python踩坑指南代码示例 1.1 踩坑案例 长期运行的daemon进程或者socket测试类进程, 经常遇到的坑是: IOError: [Errno 24] Too many open files 即进程遇到 IO 错误, 无法打开更多的文件. 1.2 填坑和…
python的坑--你知道吗? 1.列表的坑 坑的地方是:因为列表用pop之后,后面的索引都会自动减一 # 列表的坑之一 list1 = ['python','java','php','c','c++','c#','ruby'] # 将索引为奇数的元素删除 ['java','c','c#'] list2 = [] for item in list1: if list1.index(item) % 2 != 1: list1.pop(list1.index(item)) print(list1)…
Python两个变量的值进行交换的方法 使用第三方变量: '''这是第一种赋值方法,采用第三方变量''' c = a a = b b = c 使用两个变量: '''使用两个变量''' a = a+b #取两个数的和 b = a-b #然后a-b等于a然后赋值给b a = a-b #然后a-b等于b然后赋值给a,完成值的交换 使用两个变量的另一种方法: a,b = b,a…
python 两个队列进行对比 list01 = [1,2,3,4] list02 = [1,3,5] for i01 in list01: is_in_02 = False for i02 in list02: if i01 == i02: is_in_o2 = True print(i01,i02,'YES') break if not is_in_02: print(i01, ' ', 'NO') for i02 in list02: is_in_01 = False for i01 in…
目录 1.1 踩坑案例 1.2 填坑解法 1.3 坑位分析 1.4 坑后扩展 1.4.1 扩展知识 1.4.1 技术关键字 1.5 填坑总结 1.1 踩坑案例 踩坑的程序是个常驻的Agent类管理进程, 包括但不限于如下类型的任务在执行: a. 多线程的网络通信包处理 和控制Master节点交互 有固定Listen端口 b. 定期作业任务, 通过subprocess.Pipe执行shell命令 c. etc 发现坑的过程很有意思: a.重启Agent发现Port被占用了 => 立刻想到可能进程没…
目录 1.1 踩坑案例 1.2 填坑解法 1.3 坑位分析 1.4 技术关键字 1.5 坑后思考 下期坑位预告 代码示例支持 平台: Centos 6.3 Python: 2.7.14 代码示例: 菜单 - Python踩坑指南代码示例 1.1 踩坑案例 小明是个服务器管理员, 他从老管理员手里接手了一个非常繁琐的运维工作: 短暂授权root 账号给不同的 team 接口人运行备份任务 该运维任务有几个特点: 任务需且仅需运行在 root 下 root 账号只能短暂授权给各个小组 通过账号管理平…
目录 1.1 案例 1.2 分析 1.3 扩展 1.4 技术关键字 下期预告 代码示例支持 平台: Mac OS Python: 2.7.10 代码示例: - wx: 菜单 - Python踩坑指南代码示例 - github 见code_demo 1.1 案例 这期案例讲的是Unix-Like系统中, 常听到的一句话: 目录也是个文件 或者 everything is a file. 刚接触 Linux 文件系统的同学有时候听到这个很懵, 目录怎么是个文件呢?目录不应该是内部包含文件的载体么?…
python踩坑系列之导入包时下划红线及报错“No module named”问题 使用pycharm编写Python时,自己写了一个包(commontool),在同级另一个路径下(fileshandle)导入此包时,包名和模块名下都有红色下划线,运行程序报错 “ ModuleNotFoundError: No module named 'commontool' ”,针对此问题的几种解决办法: 方法一: 由于包和文件夹是有区别的,文件夹在创建时只会生成一个文件夹,不可以被导入.包在创建的时候会自…
前言 对初学者来说,Python确实简单好用,毕竟动态类型语言,不用定义就可以拿来用,类型之间随意转换简直不要太方便,因此Python用来写写小脚本,爬虫程序什么的,没什么问题. 不过,一旦用来开发稍微大型一点的项目,例如搭建一个Web应用,就会遇到一些问题,一般缺乏经验的人都会陷入某些坑中.= =... 坑 先说坑,函数参数类型是一坑,类与类的对象这又是一坑. 虽然之前用其他静态类型语言(例如C#/Java)的时候都搞明白了的,但是换了个动态类型的Python,总会有点令人疑惑. 例子 让我用…
目录 1.1 踩坑案例 1.2 填坑解法 1.3 坑位分析 1.4.1 技术关键字 下期坑位预告 代码示例支持 平台: Centos 6.3 Python: 2.7.14 Github: https://github.com/baidu/CUP 1.1 踩坑案例 pid, ppid是大家比较常见的术语, 代表进程号,父进程号. 但pgid是个什么鬼? 了解pgid之前, 我们先复习下: 进程篇其一 里面场景是: 一个进程通过os.system或者Popen家族启动子进程 后通过杀死父进程的方式无…
Python语言简单易用,但容易给新入门的朋友造成一些微妙的,难以捕捉的错误,稍不注意就入坑了. 因此,今天给大家总结一些易犯的小错误,让你轻松进行不踩坑的Python学习. 1.缩进,符号和空格不正确 写代码时大家会使用缩进.对齐.空格等,其目的是为了提高代码的可读性. 但在python语言中,许多功能都依赖于缩进. 比如在创建一个新类时,该类中的所有内容都在声明下缩进,决策.循环还有其它结构语句也会出现类似的情况, 如果你在代码执行时发现问题,可以查看一下是否使用了正确的缩进. 来看看下面的…
最近两天 Python 圈发生了一件大事,两个 Python 大佬撕逼了起来了. 不,其实是一个大佬(刘志军)被怼. 事情是这样的. 背景 人物介绍: 董明伟:公众号「Python 之美」的作者,似乎还写了一本书,我没看过,我听我 py 的同学说,还是挺牛逼的大佬,他称董大,下文我也称董大. 刘志军:公众号「Python 之禅」的作者,似乎他也写了一本书,我也没看,听 py 的同学说,他也听牛逼的,下文我称 刘大吧. 前两天董大曝光了潭州学院创始人 xxx ,招摇撞骗,自称自己是「 PyCon…
知乎上看到的Python练手项目推荐,链接见:https://www.zhihu.com/question/29372574,不知道是我自己懒得看还是理解力不行,这些项目真的是...太大了呀~~~~ 昨天大概浏览了一下Flask,发现里面的example很有意思,代码极少,思路框架十分清晰,推荐新手小朋友入坑看项目代码. 这里就minitwit的项目在windows下的部署做下简要介绍,因为官方的README在是针对Linux环境的. 项目地址: https://github.com/palle…
在练习python封装键盘事件的时候,实现一个keyDown和keyUp的功能: @staticmethod    def keyDown(keyName):        #按下按键        win32api.keybd_event(KeyboardKeys.VK_CODE[keyName],0,0,0) @staticmethod    def keyUp(keyName):        #释放按键        win32api.keybd_event(KeyboardKeys.V…
贵有恒,何必三更眠五更起,最无益,只怕一日曝十日寒. 好多东西要写下来一是方便自己,二可以分享给大家,我却一拖再拖. 工作的时候看别人代码中间结果,跳了个坑,关于python generator类型: x=(x for x in range(10)) for i in x: print (i) y=[] for i in x: y.append(i) print ("len(y)=",len(y)) 打印出y的长度竟然是0!纠结了好久,也是服了自己了,一打印指针就指到最后了,y当然长度…
dict1={1:[1,11,111],2:[2,22,222]}dict2={3:[3,33,333],4:[4,44,444]}合并两个字典得到类似 {1:[1,11,111],2:[2,22,222],3:[3,33,333],4:[4,44,444]}方法1: dictMerged1=dict(dict1.items()+dict2.items())方法2: dictMerged2=dict(dict1, **dict2)方法2等同于: dictMerged=dict1.copy()di…
这两个函数主要提供,基于字典的访问局部和全局变量的方式.在理解这两个函数时,首先来理解一下python中的名字空间概念.Python使用叫做名字空间的东西来记录变量的轨迹.名字空间只是一个字典,它的键字就是变量名,字典的值就是那些变量的值.实际上,名字空间可以象Python的字典一样进行访问 每个函数都有着自已的名字空间,叫做局部名字空间,它记录了函数的变量,包括函数的参数和局部定义的变量.每个模块拥有它自已的名字空间,叫做全局名字空间,它记录了模块的变量,包括函数.类.其它导入的模块.模块级的…
目录 1.1 踩坑案例 1.2 填坑解法 1.3 坑位分析 1.4 技术关键字 1.5 坑后思考 下期坑位预告 代码示例支持 平台: Centos 6.3 Python: 2.7.14 代码示例: 公众号点击 踩坑之旅菜单 或者 https://github.com/mythmgn/awesome_py_traps 1.1 踩坑案例 小明是个服务器管理员, 他从老管理员手里接手了一个非常繁琐的运维工作: 短暂授权root 账号给不同的 team 接口人运行备份任务 该运维任务有几个特点: 任务需…
目录 1.1 踩坑案例 1.2 填坑解法 1.3 坑位分析 1.4.1 技术关键字 1.5 填坑总结 2. 前坑回顾 2.1 Linux中, 子进程拷贝父进程哪些信息 2.2 Agent常驻进程选择>60000端口的意义 代码示例支持 平台: Centos 6.3 Python: 2.7.14 Github: https://github.com/baidu/CUP 1.1 踩坑案例 今天的坑不仅包括裸用os.system还包括裸用相关的家族: os.popen subprocess家族 sub…
/*********************************************************************  * Author  : Samson  * Date    : 09/19/2014  * Test platform:  *              Linux ubuntu 3.2.0-58-generic-pae  *              GNU bash, version 4.2.39  * ***********************…
由于要使用Python3实现des3加密要使用pycrypto模块,所以使用pip install pycrypto 来安装,然后就常规性掉坑.安装报错“Microsoft Visual C++14.0 is required”.具体错误如下图: 根据错误提示地址准备下载“Microsoft Visual C++14.0”,结果访问页面404,WHAT?ARE YOU KIDDING ME? 然后网上搜索根据该地址下载到:https://devblogs.microsoft.com/python…
pycharm设置 pycharm设置自动换行的方法 只对当前文件有效的操作:菜单栏->View -> Active Editor -> Use Soft Wraps: 如果想对所有文件都有效,就要在setting里面进行操作:File-> Setting-> Editor-> General -> Use soft wraps in editor. 加入包别名 import sys sys.path.insert(0,os.path.join(BASE_DIR,…
这两个函数主要提供,基于字典的访问局部和全局变量的方式.在理解这两个函数时,首先来理解一下python中的名字空间概念.Python使用叫做名字空间的东西来记录变量的轨迹.名字空间只是一个字典,它的键字就是变量名,字典的值就是那些变量的值.实际上,名字空间可以象Python的字典一样进行访问 每个函数都有着自已的名字空间,叫做局部名字空间,它记录了函数的变量,包括函数的参数和局部定义的变量.每个模块拥有它自已的名字空间,叫做全局名字空间,它记录了模块的变量,包括函数.类.其它导入的模块.模块级的…
编译安装OpenCV绝对是一件让人发狂的事情,CMake繁多的选项,国内蛋疼的网速,实在让人无力吐槽,然而为了使用contrib包,我不得不重新编译他. OpenCV的编译 其实OpenCV编译并不是很难,但是国内蛋疼的网速实在令人无法忍受,首先简述一下编译过OpenCV的过程 我的编译环境是deepin15 准备工作 首先我们用apt安装必备的库(虽然大部分我在之前已经安装过了 orz) sudo apt-get install build-essential sudo apt-get ins…
前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:老方玩编程 PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取http://t.cn/A6Zvjdun 如果你处于想学Python或者正在学习Python,Python的教程不少了吧,但是是最新的吗?说不定你学了可能是两年前人家就学过的内容,在这小编分享一波2020最新的Python教程.获取方式,私信小编 “ 资料 ”,即可免费获取哦! 财务Ex…
python中有两种排序方法,list内置sort()方法或者python内置的全局sorted()方法 区别为: sort()方法对list排序会修改list本身,不会返回新list.sort()只能对list进行排序. sorted()方法会返回新的list,保留原来的list.sorted 可以对所有可迭代的对象进行排序操作. sort语法: list.sort(cmp=None, key=None, reverse=False) cmp -- 可选参数, 如果指定了该参数会使用该参数的方…
转自:http://blog.chinaunix.net/uid-200142-id-3992553.html 有时候,为了需求,需要统计两个 list 之间的交集,并集,差集.查询了一些资料,现在总结在下面: 1. 获取两个list 的交集 print list(set(a).intersection(set(b))) 2. 获取两个list 的并集 print list(set(a).union(set(b))) 3. 获取两个 list 的差集 print list(set(b).diff…
将语句 from bs4 import BeautifulSoup4 改成 from bs4 import BeautifulSoup 通过 尼玛------------------------! 总结一下: python 2.7.9调用 from BeautifulSoup import BeautifulSoup python 3.5 调用 from bs4 import BeautifulSoup  …
Table of Contents 1. spacemacs 1.1. .spacemacs 文件 1.2. 项目文件 1.3. open shell windows 1.4. emacs基础 1.4.1. 自动删除没有用到的package 1.4.2. 自动缩进 indent-region 1.4.3. dired-mode 1.5. 配置emacs使用本地elpa库 1.5.1. 方法1 1.5.2. 方法2 1.6. emacs中无法启动pythonshell 2. python 2.1.…