
专栏:Python有坑系列
Python中有许许多多的坑。
熟悉C++编程的会踩坑;
熟悉Python编程的一样踩坑;
坑不可避免,除非你了解它。
-
转载
【Python有坑系列】元组中的数组可改变
纠结的元组到底可变不可变 >>> x = (1, 2, 3) # 元组中的元素不可修改 >>> x[0] = 4 Traceback (most recent call last): File "<pyshell#161>", line 1, in <module> x[0] = 4 TypeError: 'tuple' ob...2018-12-14 09:58:03 阅读数 183 评论数 0 -
转载
【Python有坑系列】用lambda匿名函数给字典赋值
lambda表达式中变量的作用域 >>> d = dict() # 这里有个坑 >>> for i in range(5): d[i] = lambda :i**2 >>> d[2]() 16 >>> d[3]() 16 # 这样看的更清楚一些 # lambda表达式中i的值是调用时决定的 >>&2018-12-14 09:55:02 阅读数 830 评论数 0 -
转载
【Python有坑系列】列表推导和循环中的变量泄漏
列表推导和循环中的变量泄漏 有个例子: i = 0 a = [i for i in range(3)] print(i) # Outputs 2 python2中列表推导改变了i变量的值,而python3修复了这个问题: i = 0 a = [i for i in range(3)] print(i) # Outputs 0 类似地,for循环对于它们的迭代变量没有私有的作用域 i = 0 ...2018-12-14 09:50:15 阅读数 119 评论数 0 -
转载
【Python有坑系列】函数默认参数
Python进阶-函数默认参数 写在前面 如非特别说明,下文均基于Python3 一、默认参数 python为了简化函数的调用,提供了默认参数机制: def pow(x, n = 2): r = 1 while n > 0: r *= x n -= 1 return r 这样在调用pow函数时,就可以省略最后一个参数...2018-12-14 09:45:51 阅读数 105 评论数 0 -
原创
【Python有坑系列】交换两个数组的切片,有坑
问题描述: 交换数组a和数组b的前5个元素,如果用C语言思路写,会发现有坑: a=np.zeros(10) b=np.ones(10) t=a[:5] a[:5]=b[:5] b[:5]=t a array([1., 1., 1., 1., 1., 0., 0., 0., 0., 0.]) b array([1., 1., 1., 1., 1., 1., 1., 1., 1., 1.]) ...2018-12-07 15:23:40 阅读数 235 评论数 0 -
原创
【Python有坑系列】numpy.append中有坑
numpy 往array里添加一个元素 首先这里p_arr为一个numpy的array,p_为一个元素 p_arr = np.concatenate((p_arr,[p_])) # 先将p_变成list形式进行拼接,注意输入为一个tuple p_arr = np.append(p_arr,p_) #直接向p_arr里添加p_ 注意一定不要忘记用赋值覆盖原p_arr不然不会变。 但是,n...2018-12-06 22:34:32 阅读数 1544 评论数 0 -
原创
【Python】收集python编码过程中碰到的坑
【最新更新】 Linux环境下的路径一定要使用斜杠“/”而不要使用反斜杠“\”。否则识别不出来。 >>> os.path.exists(r"csv2\appl") False >>> os.path.exists(r"csv2\\appl") False >>> os.path.exists(r"csv2/appl") Tru...2016-03-21 16:06:35 阅读数 2162 评论数 2 -
翻译
【Python】logging.DEBUG级别没有输出
作者遇到一个问题:logging中error和warn工作正常,但是info和debug级别无法输出;解决:不仅需要设置logging的level,还需要设置logger的level,通过logger.setlevel()=================================================================17down votefavorite1I ha2017-12-26 15:31:54 阅读数 5775 评论数 0 -
翻译
【Python有坑系列】python多进程,函数内print的内容没有打印出来
问题:python多进程,子函数内容没有打印出来。 Simple Python Multiprocessing function doesn't output results I have this very simple function right here in which I'm trying to run and test on, however, it doesn't out...2017-12-22 16:41:15 阅读数 8502 评论数 0 -
转载
【Python】多进程的进程池pool运行时报错:ValueError: Pool not running
我刚接触python爬虫,所以有些地方不是很懂。我最近写了一个python爬虫,作用是从一个动漫网站上爬图片。由于一张一张下载太慢,我用了并发的方法Pool。p = Pool(10) for key in dd.keys(): createDirs(key)//创建目录 urls = img_url(dd[key])//返回图片地址 for index,url in enu2017-12-22 10:26:36 阅读数 4194 评论数 5 -
原创
【Python有坑系列】报错NameError: name 'execfile' is not defined
想用execfile顺序执行脚本文件,但是报错: NameError: name 'execfile' is not defined execfile在python3中已被废除,代替函数: exec(open(filename).read()) 使用替代函数,输入文件名后,依然报错: UnicodeDecodeError: 'gbk' codec can't decode byt...2017-11-10 16:16:09 阅读数 13920 评论数 1 -
转载
【Python有坑系列】报错NameError: name 'reload' is not defined
Python 解决 :NameError: name 'reload' is not defined 问题, 链接 解决:NameError: name 'reload' is not defined 问题 对于 Python 2.X: import sys reload(sys) sys.setdefaultencoding("utf-8") 1 2 3 对于 <= Pyth...2017-12-05 17:08:52 阅读数 1080 评论数 0 -
原创
【Python】收集python2代码转python3遇到的问题
【Python2与Python3代码兼容性解决方案】 在程序中做python版本判断 sys.version_info #sys.version_info(major=2, minor=7, micro=16, releaselevel='final', serial=0) sys.version_info.major # 2 代码示例: import sys if sys....2017-12-02 15:53:11 阅读数 5530 评论数 2 -
原创
【Python】Python-numpy逻辑报错:The truth value of an array with more than one element is ambiguous. Us
报错代码: import numpy as np a=np.zeros(3) a[0]=0; a[1]=1; a[2]=2 if a==[1,2,3]: print "OK" else: print "NOT OK" Traceback (most recent call last): File "<pyshell#45>", line 1, in <modu...2016-02-21 15:46:31 阅读数 52645 评论数 4 -
原创
【PYthon报错】np.complex128数字的虚数部分为0j
问题1:我有一个类型为“np.complex128”的数组,但是复数部分等于0。怎样才能提取虚数的实数部分?此外,我想做scipy加法,但是不清楚如何进行np.complex128类型数据的的合并。解决:如果是numpy数组,直接调用.real属性(虚部调用.imag属性):In [59]: a = np.array([1+0j, 2+0j, -1+0j]) In [60]: a Out[60]:2017-09-02 11:17:06 阅读数 3141 评论数 0 -
翻译
【Python报错】ComplexWarning: Casting complex values to real discards the imaginary part
报错:ComplexWarning: Casting complex values to real discards the imaginary part中文翻译为:将复数转换为实数丢弃虚部例如,在如下代码中,就被报出错误import numpy as np np.seterr(all='warn') A = np.array([10]) a=A[-1] a**a原因:a是int32,能表示的最大2017-09-01 20:57:12 阅读数 6842 评论数 0 -
原创
【Python有坑系列】局部变量和全局变量需要警惕的两个坑
1. 在函数内部引用全局的变量,有同名局部变量 疏忽了就会出现错误,比如: #file1.py var = 1 def fun(): print var var = 200 print fun() #file2.py var = 1 def fun(): var = var + 1 return var print fun() 这两个函数都会报错Unbou...2017-07-12 15:19:18 阅读数 5952 评论数 2 -
原创
【Python】对象拷贝、对象传参、对象引用
1. 如何实现对象的拷贝呢,python 有 copy模块。 用法: import copy 对象2 = copy.copy(对象1) 问题: 浅拷贝,改变一个对象,另外一个会跟着改变。 根据评论w6443同学提醒纠正此处:浅拷贝列表时,如果改变列表内不可变元素,列表会复制一份;但是改变列表内可变元素,如子列表,那么修改原列表后,浅拷贝列表也会自动改变。 解决: 对象2 = co...2017-06-04 17:39:44 阅读数 5516 评论数 2 -
转载
【Python有坑系列】函数参数传递:传值?引用?
一、首先要说的是:变量 与 对象 在python中,类型属于对象,变量是没有类型的,这正是python的语言特性,也是吸引着很多pythoner的一点。所有的变量都可以理解 是内存中一个对象的“引用”,或者,也可以看似c中void*的感觉。所以,希望大家在看到一个python变量的时候,把变量和真正的内存对象分开。 类型是属于对象的,而不是变量。这样,很多问题就容易思考了。 例如: nf...2015-09-13 19:26:10 阅读数 799 评论数 0