博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python 常用内置函数
阅读量:4946 次
发布时间:2019-06-11

本文共 11371 字,大约阅读时间需要 37 分钟。

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中的内容好比是一个个的全局变量,即
    1
    2
    3
    4
    5
    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()来判断一个对象是否是一个已知的类型

如果参数object是classinfo的实例,或者object是classinfo类的子类的一个实例, 返回True。如果object不是一个给定类型的的对象, 则返回结果总是False。
如果classinfo不表示一个类(类型对象), 那么它要么是一个类的元组, 或者递归地包含这样的(由数据类型构成的)元组.其他的序列类型是不被允许的。
如果classinfo不是一种数据类型或者由数据类型构成的元组,将引发一个TypeError异常。
举例:>>> isinstance(1, int)True>>> isinstance(1.0, float)True

 

转载于:https://www.cnblogs.com/liuxiaowei/p/7300469.html

你可能感兴趣的文章
安卓机-华为安装charles证书
查看>>
Windows 下手工搭建 LNMP 环境
查看>>
【ASP.NET】从服务器端注册客户端脚本
查看>>
C语言 memcpy二维数组的复制
查看>>
Infix to Postfix Expression
查看>>
win7任务栏还原为xp样式
查看>>
maven在windows及linux环境下安装
查看>>
【一头扎进JMS】(3)----ActiviteMQ点对点消息实现+消息监听
查看>>
Ubuntu安装python虚拟环境以及apt-get和pip源更换
查看>>
ORG 07C00H的意思
查看>>
BZOJ1036;[ZJOI2008]树的统计
查看>>
激活码
查看>>
php 获取优酷视频的真实地址(2014.6月新算法)
查看>>
SQL数据库知识二(Day 25)
查看>>
WPF 入门笔记之事件
查看>>
Win7 64位硬盘安装Ubuntu 64位的细微配置
查看>>
keystore和truststore
查看>>
【Luogu】P3396哈希冲突(根号算法)
查看>>
ready与onload的性能
查看>>
matlab(5) : 求得θ值后用模型来预测 / 计算模型的精度
查看>>