milang(小语)
caimouse
在IT行业有20多年的经验。拥有20多年的C和C++开发经验,5年以上Python开发经验,资深数据库开发、上百G数据库优化经验。曾经任职嵌入式工程师、P2P开发工程师、银行信用卡交易系统工程师、全自动化电池测试部门经理。
展开
-
Python标准库:内置函数ord(c)
本函数是把一个字符串表示的字符转换为字符相对应的整数,适用于UNICODE字符。比如ord(‘a’)则返回整数97,ord(‘\u2020’)则返回整数8224。与函数chr()的功能刚好相反。例子:#ord()print('ord(a)', ord('a'))print('ord(u2020)', ord('\u2020'))print('ord(1)', ord('1'))结果输出如下:原创 2015-02-07 11:17:47 · 9404 阅读 · 0 评论 -
Python标准库:内置函数locals()
本函数更新并返回当前系统可以使用局部符号表,使用字典表示。例子:#locals()class Foo: def __init__(self): x = 100 y = 200 l = locals() print(l) foo = Foo()结果输出如下:{'self': , 'x':原创 2015-01-20 20:21:15 · 2225 阅读 · 0 评论 -
Python标准库:内置函数map(function, iterable, ...)
本函数是把函数对象function作为函数,iterable对象的每一项作为参数,然后进行计算后输出迭代子iterator。如果函数对象function可以输入多参数,那么后面可以跟多个可迭代的对象。多个迭代对象时,以最短的对象为运行结果的判断。例子:#map()x = range(10)print(list(map(hex, x)))print(list(map(lambda y : y原创 2015-01-21 20:45:03 · 4318 阅读 · 0 评论 -
Python标准库:内置函数id(object)
本函数是返回对象object的标识符,标识符类型为整数,在同一个时间里所有对象的标识符是唯一的,如果在不同生命周期的对象有可能有相同的标识符。比如创建对象A之后,再删除A,再创建对象B,对象A与对象B可能有相同的标识符。在CPython里的实现算法是直接返回对象所在内存地址。例子:#id()name1 = 'abc'name2 = 'cde'print(id(name1))print(i原创 2015-01-02 10:52:59 · 4662 阅读 · 0 评论 -
Python标准库:内置函数input([prompt])
本函数是实现从控制台输入一行字符串。其中参数prompt是输入字符串的提示字符串。 例子:>>> s = input('#')#this is the best one>>> s'this is the best one'>>> s = input('#')#中国深圳是一个高科技城市>>> s'中国深圳是一个高科技城市'>>> 蔡军生 QQ:9073204 深圳原创 2015-01-03 09:43:55 · 11901 阅读 · 1 评论 -
Python标准库:内置函数int(x=0)
本函数实现从浮点数或数字字符串转换为整数。如果没有输入任何参数,默认是返回0值。如果参数是一个数字,调用对象x.__init__()来返回相应的值。 如果参数是浮点数,就会去掉小数部分,返回整数。例子:#int()print(int(20))print(int(19.888))print(int())print(int('3721'))输出结果如下:201903721 蔡军生 QQ:90原创 2015-01-04 20:21:24 · 2809 阅读 · 0 评论 -
Python标准库:内置函数max(iterable, *[, key, default])
max(arg1, arg2, *args[, key]) 本函数是迭代对象iterable进行比较,找出最大值返回。当key参数不为空时,就以key的函数对象为判断的标准。例子:#max()array1 = range(10)array2 = range(0, 20, 3)print('max(array1)=', max(array1))print('max(array2)=', m原创 2015-01-24 00:02:01 · 13171 阅读 · 4 评论 -
Python标准库:内置函数int(x, base=10)
本函数实现从浮点数或数字字符串转换为整数。如果参数x不是一个数字,必须是字符串、数组bytes或bytearray类型。参数base是指字符串参数的进制,默认10就是表示使用十进制。当它是2时,表示二进制的字符串转换。当它是8时,表示是八进制的字符串转换。当它是16时,表示是十六进制的字符串转换。然而当它是0时,它表示不是0进制,而跟十进制是一样的。例子:print(int('20', 8))p原创 2015-01-06 20:12:50 · 9434 阅读 · 0 评论 -
Python标准库:内置函数memoryview(obj)
本函数是返回对象obj的内存查看对象。所谓内存查看对象,就是对象符合缓冲区协议的对象,为了给别的代码使用缓冲区里的数据,而不必拷贝,就可以直接使用。例子:#memoryview()v = memoryview(b'abc123')print(v[1])print(v[0])import structbuf = struct.pack("i"*12, *list(range(12)))原创 2015-01-24 10:50:28 · 8014 阅读 · 2 评论 -
Python标准库:内置函数min(iterable, *[, key, default])
min(arg1, arg2, *args[, key]) 本函数是迭代对象iterable进行比较,找出最小值返回。当key参数不为空时,就以key的函数对象为判断的标准。例子:#min()array1 = range(10)array2 = range(0, 20, 3)print('min(array1)=', min(array1))print('min(array2)=', m原创 2015-01-25 10:50:07 · 7620 阅读 · 0 评论 -
Python标准库:内置函数pow(x, y[, z])
本函数是计算x的y次方,如果z在存在,则再对结果进行取模,其结果等效于pow(x,y) %z。其中pow(x, y)与x**y等效。采用一起计算的方式是为了提高计算的效率,要求三个参数必须为数值类型。例子:#pow()print(pow(2, 2), 2**2)print(pow(2, 8), 2**8)print(pow(2, 8, 3), 2**8 % 3)print(pow(2,原创 2015-02-27 08:19:18 · 6365 阅读 · 0 评论 -
Python标准库:内置函数reversed(seq)
本函数是返回序列seq的反向访问的迭代子。例子:#reversed()for i in reversed([2, 3, 4, 5]): print(i, end = ',')结果输出如下:5,4,3,2,蔡军生 QQ:9073204 深圳原创 2015-03-19 08:28:26 · 8383 阅读 · 0 评论 -
Python标准库:内置函数print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)
本函数是实现对象以字符串表示的方式格式化输出到流文件对象file里。其中所有非关键字参数都按str()方式进行转换为字符串输出,关键字参数sep是实现分隔符,比如多个参数输出时想要输出中间的分隔字符;关键字参数end是输出结束时的字符,默认是换行符\n;关键字参数file是定义流输出的文件,可以是标准的系统输出sys.stdout,也可以重定义为别的文件;参数flush是立即把内容输出到流文件,不原创 2015-03-08 15:19:17 · 30073 阅读 · 1 评论 -
Python标准库:内置函数property(fget=None, fset=None, fdel=None, doc=None)
本函数是设置类成员的属性。参数fget是获取类成员的属性值;参数fset是设置类成员的属性值;fdel是删除类成员;参数doc是设置属性的文档字符串。通过这个函数的方式,可以实现类成员变量隐藏的方式,也就是面向对象里封装的要求。例子:#property()class Foo: def __init__(self): self._x = None def get原创 2015-03-11 08:22:54 · 5007 阅读 · 0 评论 -
Python标准库:内置函数range(stop) range(start, stop[, step])
本函数是产生一系列序列的数组,返回迭代子。参数stop是终止的数字;参数start是指明开始数列开始值;参数step是数列之间的差值。因此这个函数就是产生以start为起点,以stop为终点,以step为前后项的差值。这里三个参数可以是正整数、负整数或者0。例子:#range()for i in range(1, 10, 2): print(i, end = ',')print('\原创 2015-03-13 08:25:09 · 8457 阅读 · 0 评论 -
Python标准库:内置函数round(number[, ndigits])
本函数是实现对浮点数进行四舍五入的计算。参数number是浮点数;参数ndigits是保留几位小数,默认是0值。不过要注意的是转换出来的小数表示可能还是差异,最好使用库专用的数字来计算四舍五入运算。例子:#round()print('round(0.5)=', round(0.5), ', round(-0.5)=', round(-0.5))print('round(1.1)=', rou原创 2015-03-22 18:50:44 · 9401 阅读 · 0 评论 -
Python标准库:内置函数repr(object)
本函数是返回对象object的详细说明字符串。例子:#repr()print(repr(range(5)))print(repr(help))print(repr(0x200))print(repr([2,4,5]))结果输出如下:range(0, 5)Type help() for interactive help, or help(object) for help about obj原创 2015-03-14 11:17:16 · 2577 阅读 · 0 评论 -
Python标准库:内置函数set([iterable])
本函数是从迭代对象生成集合;集合可以增加或删除元素。例子:#set()tset = set([1, 2, 3, 3, 4, 5, 6, 6]) print(tset)tset.add(20)print(tset)结果输出如下:{1, 2, 3, 4, 5, 6}{1, 2, 3, 4, 5, 6, 20}原创 2015-04-02 08:11:11 · 2143 阅读 · 0 评论 -
Python标准库:内置函数setattr(object, name, value)
本函数实现增加或设置对象object一个属性名称name,并设置相应的值value。一般情况与getattr()配套使用。例子:#setattr()class Foo: pass foo = Foo()setattr(foo, 'name', 'caijunsheng')print(foo.name)结果输出如下:caijunsheng蔡军生 QQ: 9073204原创 2015-04-03 08:19:26 · 4920 阅读 · 0 评论 -
Python标准库:内置函数slice(stop) slice(start, stop[, step])
本函数是实现切片对象,主要用在切片操作函数里的参数传递。例子:#slice()myslice = slice(5)print(myslice)l = list(range(10))print(l[myslice])结果输出如下:slice(None, 5, None)[0, 1, 2, 3, 4] 蔡军生 QQ:9073204 深圳原创 2015-04-11 20:02:32 · 11138 阅读 · 0 评论 -
Python标准库:内置函数sorted(iterable[, key][, reverse])
本函数是实现对可迭代对象iterable进行排序。可选参数key是比较键的函数;reverse是表示是否反向排列对象里的项,是布尔值。例子:#sorted()print(sorted([5, 2, 3, 1, 4]))print(sorted({1: 'D', 2: 'B', 3: 'B', 4: 'E', 5: 'A'}, reverse = True))print(sorted("Th原创 2015-04-19 13:36:39 · 3072 阅读 · 0 评论 -
CPython编译器设计
CPython编译器设计1. 概述在2.4版本以前,从源码编译到字节码的过程主要分为两步:1)分析源码生成分析树(Parse/pgen.c)。2)从分析树生成字节码(Python/compile.c)。这是以往使用的编译过程,因而这不是一个标准的编译器工作流程。通常标准的编译流程是这样:1)分析源码生成分析树(Parser/pgen.c)。2)转换分析树为抽象语法树(Python/ast.c)。3翻译 2015-04-17 16:37:45 · 3745 阅读 · 0 评论 -
Python标准库:内置函数staticmethod(function)
本函数是返回一个静态函数对象,主要用来作为静态函数的修饰符。静态函数的特性是可以直接通过类命名空间访问,也就是说没有定义类实例也可以使用此函数;也可以通过类实例来访问。这跟JAVA或C++里的静态函数是一样的作用。与classmethod是有区别,这点要注意。例子:#staticmethod()class Foo: @staticmethod def Add(a, b):原创 2015-04-26 15:12:03 · 2389 阅读 · 0 评论 -
Python标准库:内置函数sum(iterable[, start])
本函数用来计算可迭代对象iterable的和,然后以这个结果再加上start的值。参数start用来指定相加的参数,如果没有设置这个值,默认是0值。要计算和的序列一般是数字类型,并且开始参数要设置为数字类型。其它有些情况之下,使用别的计算和的方式会更好,比如计算字符串的和使用’’.join(sequence);或者计算浮点数的和使用math.fsum();或者计算多序列的和使用itertools.原创 2015-05-03 09:37:42 · 10712 阅读 · 0 评论 -
在Python 3.4里使用Protobuf 2.6
在开发领域里,协议的使用是经常的事情,只要通讯的地方,就要使用到。比如客户端与服务器通讯,比如嵌入式系统与上位机系统通讯,比如不同进程之间进行数据通讯,这些地方都需要使用。但协议的定义的方式也有很多种,最常使用就是开发者自己定义的格式,也有使用XML等格式,不过这两种方式都存在不足之处的。首先来看自己定义的格式,如果采用二进制的方式,要调试协议格式,要处理不同的位置,要处理动态增加的字段等等,另外原创 2015-04-28 17:59:07 · 6035 阅读 · 0 评论 -
Python标准库:内置函数str(object='') str(object=b'', encoding='utf-8', errors='strict')
本函数是实现返回字符串对象。参数object是要转换内容的对象;参数encoding是编码方式;errors是错误处理方式。例子:#str()print(str(b'abc'))print(str(200))print(str(b'\xe5\x93\x88\xe5\x93\x88', encoding = 'utf-8', errors = 'ignore'))print(str('蔡原创 2015-05-01 10:22:54 · 4315 阅读 · 0 评论 -
每个程序员1小时内必须解决的5个编程问题之难题
昨天看到一篇文章说,软件开发人员应一小时完成的5道题,其中第5道题,还是比较难的。看了一下作者的原来解题思路,就是采用治减法,这是一类问题的算法题,如果没有接触过,确实有点难度。作者提供了JAVA的源码,由于我没有JAVA的运行环境,不能执行,只好改为Python的方式,顺便熟悉Python,运行了一下,递归的方法是简单,并且容易理解它,但如果自己没有去写一下,调试一下,理解起来还是有困难的。代码原创 2015-05-13 14:02:39 · 3573 阅读 · 1 评论 -
每个程序员1小时内必须解决的5个编程问题之多种方法
在这几天里,不断有各种方法涌现出来,下面就来贴上几个解决方法,如果按这些方法,真的不用一个小时就完工,关键要你想得到!下面是问题:问题3编写一个计算前100位斐波那契数的函数。根据定义,斐波那契序列的前两位数字是0和1,随后的每个数字是前两个数字的和。例如,前10位斐波那契数为:0,1,1,2,3,5,8,13,21,34。问题4编写一个能将给定非负整数列表中的数字排列成最大数字的函数。例如,给定原创 2015-05-14 12:41:12 · 2828 阅读 · 0 评论 -
Python标准库:内置函数super([type[, object-or-type]])
本函数是实现访问父类或兄弟类对象,是返回一个代理类对象,以便访问父类或兄弟类的方法。使用这个函数主要用来避免在继续类时使用基类的类名称,以及多重继承时,保证只调用一次基类的构造函数。要注意点就是不能与调用基类名称方式混合使用。例子:#super()class A: def __init__(self): print('A.init')class B(A): d原创 2015-05-17 09:18:00 · 2857 阅读 · 0 评论 -
Python标准库:内置函数zip(*iterables)
本函数是实现从多个序列生一个元组列表迭代子返回,即是从每个序列里获取一项,然后把所有的项生成元组,再把这些元组生成列表返回。如果有多个序列,以最短的序列为元组的个数。如果在参数前面添加*表示反向处理,即是从元组列表转换为分离的列表返回。例子:#zip()l = [1, 2, 3]x = [4, 5, 6]print(list(zip(l, x)))x = [4, 5]print(li原创 2015-06-19 11:32:12 · 4106 阅读 · 0 评论 -
Python标准库:内置函数__import__(name, globals=None, locals=None, fromlist=(), level=0)
本函数实现导入模块的功能。这个函数主要为了语句import的功能而实现的,大多数情况之下,是不需要直接使用这个函数。比如想动态地加载模块,才需要使用这个函数。例子:import glob,os modules = [] for module_file in glob.glob("*-plugin.py"): try: module_name,ext =原创 2015-06-20 09:36:48 · 4472 阅读 · 0 评论 -
3. 文本处理库
文本处理库主要是对字符串的操作使用,以及对文本内容方面进行处理。 3.1 string--公共的字符串操作源码位置在:Lib/string.py 3.1.1 字符串常量下面就是在字符串模块里定义的字符串常量:string.ascii_letters这个常量包含字母的大写和小写,不会随着本地化而改变。其实它就是ascii_loercase和ascii_uppercase的联合集合。 string.a原创 2015-06-22 11:02:07 · 1987 阅读 · 0 评论 -
第一章 为什么要学习编写程序?
写程序(或叫做编程)是一件非常有创造性和有回报的工作。需要编程来解决问题的原因有很多,但是你可以用编程来解决自己生活上遇到困难的数据分析问题,这是一种乐趣,同时也可以帮助别人来解决相同的问题,这或许是你用来学习编程的一个值得考虑的原因。本书假定每个人都需要学会编程,一旦当你学会编程时,你就可以会使用这个编程技能来解决你所有遇到的问题了。 在我们目前的日常生活中,已经缺少不了计算机,从笔记本到智能手翻译 2015-06-21 11:03:38 · 3092 阅读 · 0 评论 -
使用Python快速实现显示器关闭和锁住桌面
现在很多公司都需要考虑节能,特别对电方面的节能。因此很多公司都针对电脑进行管理,比如当你离开电脑时,需要把显示器处于关闭状态,同时让电脑处于锁定状态,这样有利于节能,同时也能延长电脑显示器的寿命,同时也可以让你的内容保密,不让无关人员看到相关的信息,以及可能误操作你的宝贵资料。 在没有使用这个功能程序之前,都是使用显示器的物理按钮来关闭显示,这样按的次数多了,就会导致按钮失灵,加速显示器的损坏。另原创 2015-05-19 08:41:52 · 7100 阅读 · 2 评论 -
Python标准库:内置函数tuple([iterable])
本函数实现从可迭代对象生成一个元组对象返回。元组对象是一个不可修改的列表对象。例子:#tuple()print(tuple([1, 2, 3]))print(tuple((1, 2, 3)))print(tuple('abc'))结果输出如下:(1, 2, 3)(1, 2, 3)('a', 'b', 'c') 蔡军生 QQ:9073204 深圳原创 2015-06-06 09:10:45 · 2228 阅读 · 0 评论 -
3.1.2 字符串格式化
类string.Formatter类Formatter有下面的公共访问方法:format(format_string, *args, **kwargs)format()是最基本的API方法。它把参数args和kwargs按格式字符串format_string进行格式化。这个函数只是调用vformat()方法来实现。 vformat(format_string, args, kwargs)这个方法进原创 2015-06-28 09:39:05 · 1981 阅读 · 0 评论 -
Python标准库:内置函数type(object)
type(object) type(name, bases, dict) 本函数是返回对象的类型对象。只有一个参数object时,直接返回对象的类型对象。如果只是想判断一个对象是否属于某一个类的对象,可以使用isinstance()函数,并不需要本函数返回类型对象来判断,因为在有继承关系时,它并不返回基类的类型对象。当有三个参数时,name是类的名称;bases是基类的元组;dict是类内定义的命原创 2015-06-07 11:35:17 · 3405 阅读 · 0 评论 -
3.2.1 正则表达式的语法(2)
(?!...)向前识别不等于指定字符就匹配,当下一个单词不等于...时就识别出来括号前面指定的单词。比如Isaac(?!Asimov),就会这样判断,当紧跟着Isaac后面不是单词Asimov时,就把它匹配出来。例子:print('Isaac(?!Asimov)')print(u'abcdAsimovIsaacttttt')m = re.findall(u'Isaac(?!Asimov)', u'原创 2015-07-26 09:34:29 · 1546 阅读 · 0 评论 -
3.1.4 模板字符串
在字符串中进行字符串替换,一般是使用%s来格式化解决,但这种格式化使用起来比较复杂,并且即使是熟悉的开发人员使用起来也容易出错。为了解决这些问题,在字符串库里提供一个模板类。具体情况可以参考PEP 292文档。模板类字符串主要使用$开头的替换字符串来代替%开头的字符串。替换字符串的规则如下:l $$,用两个$来表示一个$字符输出。l $identifier,用$加标识符方式来识别替换串位置和键值。原创 2015-07-11 08:16:51 · 1806 阅读 · 0 评论 -
Python标准库:内置函数vars([object])
本函数是实现返回对象object的属性和属性值的字典对象。如果默认不输入参数,就打印当前调用位置的属性和属性值,相当于locals()的功能。如果有参数输入,就只打印这个参数相应的属性和属性值。例子:#vars()print(vars())class Foo: a = 1print(vars(Foo))foo = Foo()print(vars(foo))结果输出如下:{'原创 2015-06-14 07:51:55 · 15325 阅读 · 0 评论