python
文章平均质量分 58
GeekCesto
Thinking Before Coding
展开
-
python的 局部变量和全局变量
全局变量:所有函数之外定义的变量局部变量:函数内部定义的变量 或者代码块里的变量1.函数内部的变量名如果第一次出现,且出现在=前面,即被视为定义了一个局部变量,不管全局域中有没有该变量名,函数中使用的将是局部变量。(即声明了一个新的局部变量。如果这个变量名字和全部变量名字相同,那么局部变量名字会覆盖全局变量名字。#[demo1]num = 100 def func(): newVa原创 2017-07-31 19:12:06 · 32297 阅读 · 4 评论 -
《Python源码剖析》之 dict对象
Python里的dict和C++ STL的map一样,都是映射容器(key->value),但实现原理不同。由于python内部大量使用dict这种结构,效率要求很高,所以Python没有使用STL map的平衡二叉树,而采用哈希表,最低能在O(1)时间内完成搜索。 使用hash就必须解决冲突的问题,dict采用的是开放寻址法。原因我觉得是开放寻址法比拉链法能更好地利用CPU cache,ca原创 2017-08-23 10:03:47 · 600 阅读 · 0 评论 -
《Python源码剖析》之 list对象
定义typedef struct { PyObject_VAR_HEAD //list对象是变长对象,所以有变长对象头 PyObject **ob_item; //真正的存储容器,用来存储PyObject对象指针。 Py_ssize_t allocated; //allocated表示list已分配了多少存储空间。} PyListObject;说明 PyObje原创 2017-08-23 09:43:58 · 637 阅读 · 1 评论 -
《Python 源码剖析》 之 int
int对象,显然是不可变的对象。那么对于数字,引用的开销显然大,new和free比较费性能。所以py是维护了一个一定范围的Int值,类似于一个int对象池子。和java的string类似,但是java是有普通类型int。 其实, 小整数对象池就是一个PyIntObject指针数组(注意是指针数组), 大小=257+5=262, 范围是[-5, 257) 注意左闭右开. 即这个数组包含了262个原创 2017-08-23 09:07:53 · 802 阅读 · 0 评论 -
Python里的String
1.字符串对象s1 = str()print(s1) # ' ' 即得到一个为空的字符串对象s1 = str()print(s1) # 打印为 '' 即得到一个为空的字符串对象---------------------# in python `''` or `""` is the same字符串的 ” “ ' ' ‘’‘ ’‘’‘都是字符原创 2017-08-16 05:25:07 · 4733 阅读 · 0 评论 -
《Python 源码阅读》之 类型Type
py一切皆对象: 那么Type也是个对象。对象类型叫PyTypeObjectdemo>>> a = 1>>> a1>>> type(a)<type 'int'> int类型#等价的两个>>> type(int) int类型的类型就是type<type 'type'>>>> type(type(a)) type(a)是int类型的类型就是type<type 'ty原创 2017-08-23 08:36:20 · 661 阅读 · 0 评论 -
《Python 源码剖析》之对象
py一切皆对象的实现Python中对象分为两类: 定长(int等), 非定长(list/dict等)所有对象都有一些相同的东西, 源码中定义为PyObject和PyVarObject, 两个定义都有一个共同的头部定义PyObject_HEAD(其实PyVarObject有自己的头部定义PyObject_VAR_HEAD, 但其实际上用的也是PyObject_HEAD).比如这里面就有那个引用计数/*原创 2017-08-23 08:13:32 · 325 阅读 · 0 评论 -
Python的递归深度
RuntimeError: maximum recursion depth exceeded while calling a Python object 大意是调用 Python 对象时超出最大深度限制Python的递归深度Python语言默认的递归深度是很有限的,当递归深度超过值的时候,就会引发RuntimeError异常。Python专门设置的一种机制用来防止无限递归造成Python溢原创 2017-08-22 22:30:55 · 4668 阅读 · 0 评论 -
python:单引号,双引号和三引号
python中字符串可以用单引号括起来,也可以用双引号,这两种方式是等价的需要表示一个字符串对象的话,单引号和双引号没有区别 为什么需要单引号和双引号同时支持,而一般都是”呢? 比如” 双引号’里面有单引号’ 存在” ,可以不用转移字符。三引号的好处在哪,为什么存在? python 三引号的形式用来输入多行文本,也就是说在三引号之间输入的内容将被完完全全原样保留,包含的单号和双引号不用转义,原创 2017-08-22 21:17:44 · 1747 阅读 · 0 评论 -
Python中is和==的区别
Python中的对象包含三要素:id、type、value。id用来唯一标识一个对象,映射堆内存地址value是对象的值。type标识对象的类型, is判断的是a对象是否就是b对象,是通过id来判断的。也就是内存地址。其实本质就是判断id(a)==id(b),当然也可以使用==判断。但是必须是id(a)==id(b) 而不是a==b a = [1,2,3] b = [1,2,3]原创 2017-08-22 21:02:22 · 335 阅读 · 0 评论 -
python的数据可视化库 matplotlib 和 pyecharts
Matplotlib大家都很熟悉 不谈。-------------------------------------------------------------------------------------------------------------Echarts是百度出的很有名 也很叼。 以前操练过很多次。。Echarts 是百度开源的一个数据可视化 JS 库原创 2017-07-25 03:08:16 · 8266 阅读 · 0 评论 -
python库 图像处理PIL做图片反处理
----------------------------------------------------------------------------------------------------------------------------------------------------1.使用PIL库图形处理专业库PIL库 Python Image Library form PIL im原创 2017-07-25 02:28:43 · 1694 阅读 · 0 评论 -
python的可学计算库 Numpy
【数据的含义】一个数据那就是表达一个含义一组数据(多个)呢 表达一个或者多个含义[数据的维度]:一组数据的组织形式比如:一维线性关系 二维关系一维数据:由一组对等关系的数据组成(数据们大家的关系是同一个水平)。这组数据有序或者无序。采用线性方式组织【数组和列表】·基本的python没有数组概念 但是你可以使用库实现啊。引入数组类型从库里面原创 2017-07-25 02:27:17 · 462 阅读 · 0 评论 -
python 不可变量和可变量(稍微深入)
@ 摘要: Python的数据类型涉及到2个大原则 即 可变和不可变,是否可变显然说的变量代表的内存空间里的值。 本文简要概述python3的 (python2版本好像更奇葩) 并且和Java的相关内容进行类比。 以源码为依据,从时间和空间出发猜测为什么会这么做。@ 作者: http://blog.csdn.net/vincent_ceso@ 声明:不保证正确:) 转载无需注明 就原创 2017-07-31 23:04:07 · 3644 阅读 · 2 评论 -
《Python 源码剖析》 之 tuple
结构定义typedef struct { PyObject_VAR_HEAD PyObject *ob_item[1];} PyTupleObject;说明 PyObject_VAR_HEAD PyTupleObject在底层是个变长对象(需要存储列表元素个数). 虽然, 在python中, tuple是不可变对象 PyObject *ob_item[1]原创 2017-08-23 10:09:05 · 898 阅读 · 0 评论