abs 取绝对值
print(abs(-1)) #结果1
all(...)
all(iterable) -> bool
Return True if bool(x) is True for all values x in the iterable.
If the iterable is empty, return True.
如果iterable的所有元素不为0、''、False或者iterable为空,all(iterable)返回True,否则返回False;函数等价于:
1 def all(iterable):2 3 for element in iterable:4 if not element:5 return False6 return True
示例:
1 >>> all(['a', 'b', 'c', 'd']) #列表list,元素都不为空或0 2 True 3 >>> all(['a', 'b', '', 'd']) #列表list,存在一个为空的元素 4 False 5 >>> all([0, 1,2, 3]) #列表list,存在一个为0的元素 6 False 7 8 >>> all(('a', 'b', 'c', 'd')) #元组tuple,元素都不为空或0 9 True10 >>> all(('a', 'b', '', 'd')) #元组tuple,存在一个为空的元素11 False12 >>> all((0, 1,2, 3)) #元组tuple,存在一个为0的元素13 False14 15 >>> all([]) # 空列表16 True17 >>> all(()) # 空元组18 True
注意:空元组、空列表返回值为True,这里要特别注意。
any(...)
any(iterable) -> bool
Return True if bool(x) is True for any x in the iterable.
If the iterable is empty, return False.
any(iterable)说明:参数iterable:可迭代对象;
如果当iterable所有的值都是0、''或False时,那么结果为False,如果所有元素中有一个值非0、''或False,那么结果就为True
函数等价于:
1 def any(iterable):2 3 for element in iterable:4 5 if element:6 7 return False8 9 return True
示例:
1 >>> any(['a', 'b', 'c', 'd']) #列表list,元素都不为空或0 2 True 3 4 >>> any(['a', 'b', '', 'd']) #列表list,存在一个为空的元素 5 True 6 7 >>> any([0, '', False]) #列表list,元素全为0,'',false 8 False 9 10 >>> any(('a', 'b', 'c', 'd')) #元组tuple,元素都不为空或011 True12 13 >>> any(('a', 'b', '', 'd')) #元组tuple,存在一个为空的元素14 True15 16 >>> any((0, '', False)) #元组tuple,元素全为0,'',false17 False18 19 >>> any([]) # 空列表20 False21 22 >>> any(()) # 空元组23 False
ascii
(object)
As , return a string containing a printable representation of an object, but escape the non-ASCII characters in the string returned by using \x
, \u
or \U
escapes. This generates a string similar to that returned by in Python 2.
说明:
1. 返回一个可打印的对象字符串方式表示,如果是非ascii字符就会输出\x,\u或\U等字符来表示。与python2版本里的repr()是等效的函数。
>>> ascii(1)'1'>>> ascii('&')"'&'">>> ascii(9000000)'9000000'>>> ascii('中文') #非ascii字符"'\\u4e2d\\u6587'"
bin,oct,hex
print(bin(10)) #10进制转2进制print(oct(10)) #10进制转8进制print(hex(10)) #10进制转16进制
bytearray([source[, encoding[, errors]]])
返回一个新字节数组。这个数组里的元素是可变的,并且每个元素的值范围: 0 <= x < 256。可以通过“字节与字节数组操作”章节来查看相关字节数组的内容。下面说明一下几种特别的使用方法:
1. 如果source是一个字符串,那么必须给出endcoding是什么样编码的,以便转换为合适的字节保存。
2. 如果source是一个整数,那么这个数组将初始化为空字节。
3. 如果source是一个有缓冲区接口的对象,那么只读的接口初始到数组里。
4. 如果source是一个迭代对象,那么这个迭代对象的元素都必须符合0 <= x < 256,以便可以初始化到数组里。
如果没有输入任何参数,默认就是初始化数组为0个元素。
例子:
#bytearray()函数 a = bytearray('1234深圳', 'utf-8') print(a) b = bytearray() print(b) c = [1,4,5,7,8] print(bytearray(c)) 输出结果如下:bytearray(b'1234\xe6\xb7\xb1\xe5\x9c\xb3')bytearray(b'')bytearray(b'\x01\x04\x05\x07\x08')
bytes
返回一个新的数组对象,这个数组对象不能对数组元素进行修改。每个元素值范围: 0 <= x < 256。bytes函数与bytearray函数主要区别是bytes函数产生的对象的元素不能修改,而bytearray函数产生的对象的元素可以修改。因此,除了可修改的对象函数跟bytearray函数不一样之外,其它使用方法全部是相同的。最后它的参数定义方式也与bytearray函数是一样的。
#bytes()函数 a = bytes('abc', 'utf-8') print(a) b = bytes(1) print(b) c = bytes([2,3,6,8]) print(c)
输出结果如下:
b'abc'
b'\x00'
b'\x02\x03\x06\x08'
callable 是否是可被调用的,返回True或False
print(callable(bytes))print(callable(abs))打印结果:TrueTrue
chr() 函数用一个范围在range(256)内的(就是0~255)整数作参数,返回一个对应的字符
>>> chr(65)'A'
ord() 函数是chr()函数(对于8位的ASCII字符串)或unichr()函数(对于Unicode对象)的配对函数,它以一个字符(长度为1的字符串)作为参数,返回对应的ASCII数值,或者Unicode数值,如果所给的Unicode字符超出了你的Python定义范围,则会引发一个TypeError的异常。
>>>ord('a') 97
compile()--编译 执行字符串表示的函数,并为该函数提供全局变量
这个函数有什么用呢? 一个最简单的例子, 就是我们的代码, 会被解释器读取,解释器读取后的其实是字符串, 然后通过compile编译后, 又转换成python可识别的代码.这样python就能执行了.
这里就有一个例子, 是将一段str字符串, 通过compile编译为python代码. 具体如下:
参考自http://www.cnblogs.com/wupeiqi/p/4592637.html
本篇的内容从题目中就可以看出来,就是为之后剖析tornado模板做准备,也是由于该知识点使用的巧妙,所有就单独用一篇来介绍了。废话不多说,直接上代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | #!usr/bin/env python #coding:utf-8 namespace = { 'name' : 'wupeiqi' , 'data' :[ 18 , 73 , 84 ]} code = '''def hellocute():return "name %s ,age %d" %(name,data[0],) ''' func = compile (code, '<string>' , "exec" ) exec func in namespace result = namespace[ 'hellocute' ]() print result |
此段代码的执行结果是:name wupeiqi,age 18
上述代码解析:
- 第6行,code是一个字符串,该字符串的内容是一个函数体。
- 第8行,将code字符串编译成函数 hello
- 第10行,将函数 hello 添加到namespace字典中(key为hello),同时也将python的所有内置函数添加到namespace字段中(key为__builtins__),如此一来,namespace中的内容好比是一个个的全局变量,即 12345
name = wupeiqi
data = [
18
,
73
,
84
]
def
hellocute():
return
"name %s ,age %d"
%
(name,data[
0
],)
- 第12行,执行Hello函数并将返回值复制给result
- 第14行,输入result
这段代码用的很是巧妙有木有,亮瞎狗眼有木有,居然把字符串变成了函数并且还为该函数提供了全局变量。对于该功能,它就是python的web框架中模板语言部分至关重要的部分,因为在模板处理过程中,首先会读取html文件,然后分割html文件,再然后讲分割的文件组成一个字符串表示的函数,再再然后就是利用上述方法执行字符串表示的函数。
complex([real[, imag]])
本函数可以使用参数real + imag*j方式创建一个复数。也可以转换一个字符串的数字为复数;或者转换一个数字为复数。如果第一个参数是字符串,第二个参数不用填写,会解释这个字符串且返回复数;不过,第二个参数不能输入字符串方式,否则会出错。real和imag参数可以输入数字,如果imag参数没有输入,默认它就是零值,这个函数就相当于int()或float()的功能。如果real和imag参数都输入零,这个函数就返回0j。有了这个函数,就可以很方便地把一个列表转换为复数的形式。
注意:当想从一个字符串的复数形式转换复数时,需要注意的是在字符串中间不能出现空格,比如写成complex(‘1+2j’),而不是写成complex(1 +2j’), 否则会返回ValueError异常。
#complex() print(complex(1)) print(complex('2+1j')) print(complex(2, 5)) l = [1, 3, 4, 5] for i in l: print(complex(i, 5)) 结果输出如下:(1+0j)(2+1j)(2+5j)(1+5j)(3+5j)(4+5j)(5+5j)
dict() 函数用于创建一个字典。返回一个字典
语法:
class dict(**kwarg)class dict(mapping, **kwarg)class dict(iterable, **kwarg)
参数说明:
- **kwargs -- 关键字
- mapping -- 元素的容器。
- iterable -- 可迭代对象
>>>dict() # 创建空字典{}>>> dict(a='a', b='b', t='t') # 传入关键字{ 'a': 'a', 'b': 'b', 't': 't'}>>> dict(zip(['one', 'two', 'three'], [1, 2, 3])) # 映射函数方式来构造字典{ 'three': 3, 'two': 2, 'one': 1} >>> dict([('one', 1), ('two', 2), ('three', 3)]) # 可迭代对象方式来构造字典{ 'three': 3, 'two': 2, 'one': 1}>>>
dir() 返回包含要查询对象的所有属性名称的列表
要查看python某个模块可以干什么,先要导入模块,之后用上面讲过的方式查看就可以。比如要查看都可以干什么,可以像下边这样操作:
>>> import sys # 获得属性列表,在这里是sys模块的属性列表>>> dir(sys)['__displayhook__', '__doc__', '__excepthook__', '__name__', '__package__', '__stderr__', '__stdin__', '__stdout__', '_clear_type_cache', '_compact_freelists','_current_frames', '_getframe', 'api_version', 'argv', 'builtin_module_names', 'byteorder', 'call_tracing', 'callstats', 'copyright', 'displayhook', 'dllhandle', 'dont_write_bytecode', 'exc_info', 'excepthook', 'exec_prefix', 'executable','exit', 'flags', 'float_info', 'getcheckinterval', 'getdefaultencoding', 'getfilesystemencoding', 'getprofile', 'getrecursionlimit', 'getrefcount', 'getsizeof','gettrace', 'getwindowsversion', 'hexversion', 'intern', 'maxsize', 'maxunicode', 'meta_path', 'modules', 'path', 'path_hooks', 'path_importer_cache', 'platform', 'prefix', 'ps1', 'ps2', 'setcheckinterval', 'setprofile', 'setrecursionlimit', 'settrace', 'stderr', 'stdin', 'stdout', 'subversion', 'version', 'version_info', 'warnoptions', 'winver']
divmod(a,b) 方法返回的是a//b(除法取整)以及a对b的余数,返回结果类型为tuple,参数:a,b可以为数字(包括复数)
>>> divmod(9,2)(4, 1)>>> divmod(11,3)(3, 2)>>> divmod(1+2j,1+0.5j)((1+0j), 1.5j)
enumerate()
- enumerate()是python的内置函数
- enumerate在字典上是枚举、列举的意思
- 对于一个可迭代的(iterable)/可遍历的对象(如列表、字符串),enumerate将其组成一个索引序列,利用它可以同时获得索引和值
- enumerate多用于在for循环中得到计数
- enumerate()返回的是一个enumerate对象,例如:
例:
- 如果对一个列表,既要遍历索引又要遍历元素时,首先可以这样写:
list1 = ["这", "是", "一个", "测试"]for i in range (len(list1)): print i ,list1[i]
- 上述方法有些累赘,利用enumerate()会更加直接和优美:
list1 = ["这", "是", "一个", "测试"]for index, item in enumerate(list1): print index, item>>>0 这1 是2 一个3 测试
- enumerate还可以接收第二个参数,用于指定索引起始值,如:
list1 = ["这", "是", "一个", "测试"]for index, item in enumerate(list1, 1): print index, item>>>1 这2 是3 一个4 测试
eval() 将字符串str当成有效的表达式来求值并返回计算结果
语法: eval(source[, globals[, locals]]) -> value
参数:
source:一个Python表达式或函数compile()返回的代码对象
globals:可选。必须是dictionary
locals:可选。任意map对象
可以把list,tuple,dict和string相互转化。#################################################字符串转换成列表>>>a = "[[1,2], [3,4], [5,6], [7,8], [9,0]]">>>type(a)>>> b = eval(a)>>> print b[[1, 2], [3, 4], [5, 6], [7, 8], [9, 0]]>>> type(b) #################################################字符串转换成字典>>> a = "{1: 'a', 2: 'b'}">>> type(a) >>> b = eval(a)>>> print b{ 1: 'a', 2: 'b'}>>> type(b) #################################################字符串转换成元组>>> a = "([1,2], [3,4], [5,6], [7,8], (9,0))">>> type(a) >>> b = eval(a)>>> print b([1, 2], [3, 4], [5, 6], [7, 8], (9, 0))>>> type(b)
exec() 是Python的built-in函数。其作用很好描述,就是执行以string类型存储的Python代码
>>> i = 2>>> j = 3>>> exec("ans = i + j")>>> print("Answer is: ", ans)Answer is: 5>>>
在上个例子里面,ans变量并没有显式的定义,但仍然可以在print函数中调用。这是exec语句执行了"ans = i + j"
中的代码,定义了ans变量。
filter()函数是 Python 内置的另一个有用的高阶函数,filter()函数接收一个函数 f 和一个list,这个函数 f 的作用是对每个元素进行判断,返回 True或 False,filter()根据判断结果自动过滤掉不符合条件的元素,返回由符合条件元素组成的新list。
例如,要从一个list [1, 4, 6, 7, 9, 12, 17]中删除偶数,保留奇数,首先,要编写一个判断奇数的函数:def is_odd(x): return x % 2 == 1然后,利用filter()过滤掉偶数:>>>filter(is_odd, [1, 4, 6, 7, 9, 12, 17])结果:[1, 7, 9, 17]
float() 函数功能将一个数值或者字符转换成浮点型数值
>>> float(3)3.0>>> float('3')3.0
format() 函数
语法
它通过{}和:来代替%。
“映射”示例
通过位置
In [1]: '{0},{1}'.format('kzc',18) Out[1]: 'kzc,18' In [2]: '{},{}'.format('kzc',18) Out[2]: 'kzc,18' In [3]: '{1},{0},{1}'.format('kzc',18) Out[3]: '18,kzc,18'
字符串的format函数可以接受不限个参数,位置可以不按顺序,可以不用或者用多次,不过2.6不能为空{},2.7才可以。
通过关键字参数In [5]: '{name},{age}'.format(age=18,name='kzc') Out[5]: 'kzc,18'
通过对象属性
class Person: def __init__(self,name,age): self.name,self.age = name,age def __str__(self): return 'This guy is {self.name},is {self.age} old'.format(self=self)
In [2]: str(Person('kzc',18)) Out[2]: 'This guy is kzc,is 18 old'
通过下标
In [7]: p=['kzc',18] In [8]: '{0[0]},{0[1]}'.format(p) Out[8]: 'kzc,18'
有了这些便捷的“映射”方式,我们就有了偷懒利器。基本的python知识告诉我们,list和tuple可以通过“打散”成普通参数给函数,而dict可以打散成关键字参数给函数(通过和*)。所以可以轻松的传个list/tuple/dict给format函数。非常灵活。
格式限定符
它有着丰富的的“格式限定符”(语法是{}中带:号),比如:
填充与对齐
填充常跟对齐一起使用^、<、>分别是居中、左对齐、右对齐,后面带宽度:号后面带填充的字符,只能是一个字符,不指定的话默认是用空格填充比如In [15]: '{:>8}'.format('189') Out[15]: ' 189' In [16]: '{:0>8}'.format('189') Out[16]: '00000189' In [17]: '{:a>8}'.format('189') Out[17]: 'aaaaa189'
精度与类型f
精度常跟类型f一起使用In [44]: '{:.2f}'.format(321.33345) Out[44]: '321.33'
其中.2表示长度为2的精度,f表示float类型。
其他类型
主要就是进制了,b、d、o、x分别是二进制、十进制、八进制、十六进制。In [54]: '{:b}'.format(17) Out[54]: '10001' In [55]: '{:d}'.format(17) Out[55]: '17' In [56]: '{:o}'.format(17) Out[56]: '21' In [57]: '{:x}'.format(17) Out[57]: '11'
用,号还能用来做金额的千位分隔符。
In [47]: '{:,}'.format(1234567890)Out[47]: '1,234,567,890'
frozenset() 定义不可变集合,集合不能加也不能减
s1=frozenset({1,2,3,4})print(type(s1))
globals()查看全局作用域
print(globals())
hash() 返回对象的哈希值,用整数表示。哈希值在字典查找时,可用于快速比较键的值,相等的数值,即使类型不一致,计算的哈希值是一样的
>>> 1.0 == 1True>>> hash(1.0)>>> hash(1)>>> hash(1.0000)
help() 查看帮助文档
#给函数加文档解释,用到单引号,双引号,三引号def func(): # ''' # test function # :return: # ''' passprint(help(func))
id() 是python解释器实现的功能,只是反映了变量在内存的地址,但并不是真实的内存地址
x=1print(id(x))
input() 提供了promat参数,首先将参数值输出到标准的输出,并且不换行。函数读取用户输入的值,将其转换成字符串。
>>> s = input('please input your name:')please input your name:Ain>>> s'Ain'
int() 将一个数字或base类型的字符串转换成整数
int(3.14) # 3int(2e2) # 200int(100, 2) # 出错,base 被赋值后函数只接收字符串int('23', 16) # 35int('Pythontab', 8) # 出错,Pythontab不是个8进制数
isinstance()来判断一个对象是否是一个已知的类型
举例:>>> isinstance(1, int)True>>> isinstance(1.0, float)True