python 函数中的内置函数及用法详解

今天来介绍一下Python解释器包含的一系列的内置函数,下面表格按字母顺序列出了内置函数:

下面就一一介绍一下内置函数的用法:

1、abs()

返回一个数值的绝对值,可以是整数或浮点数等。

print(abs(-18))
print(abs(0.15))
result:
18
0.15

2、all(iterable)

如果iterable的所有元素不为0、''、False或者iterable为空,all(iterable)返回True,否则返回False。

print(all(['a','b','c','d'])) #列表list,元素都不为空或0,返回True
True
print(all(['a','b','','d'])) #如果存在一个为空的元素,返回False
False
print(all([0,1,2,3]))  #如果存在为0的元素,同样返回False
False
print(all([]))   #空元组和空列表返回值为True
True
print(all(()))
True

3、any(iterable)

如果iterable的任何元素不为0、''、False,all(iterable)返回True,如果iterable为空,返回Fasle。

注意:此函数与all()函数的在于,any()函数中有任意一个元素为0、''、False不影响整体,会返回True,而all()函数中必须是全部不包含特殊元素才会返回True,只要有一个特殊元素,会直接返回False.

print(any(['a','b','c','d'])) #列表list,元素都不为空或0
True
print(any(['a','b','','d'])) #列表list,存在一个为空的元素,返回True
True
print(any([0,False]))  #如果元素全部是0,Fasle,返回Fasle
False
print(any([]))   #any函数中空列表和空元组返回Fasle
False
print(any(()))
False

4、bin()

将一个整数转换成一个二进制字符串,结果以'0b'为前缀。

print(bin(32))   #将十进制转换成二进制
print(bin(64))
print(bin(128))
result:
0b100000
0b1000000
0b10000000 

5、hex()

将一个整数转换成一个小写的十六进制字符串,结果以'0x'为前缀。

print(hex(255))   #将整数转换成十六进制
print(hex(192))
result:
0xff
0xc0 

6、oct()

将一个整数转换成八进制的字符串,结果以'0o'为前缀。

print(oct(255))   #将整数转换成八进制
print(oct(192))
result:
0o377
0o300 

7、bool()

返回一个布尔值,True或False。

print(bool())   #bool值缺省为False
False
print(bool(0))
False
print(bool('jack'))
True
print(bool(""))
False 

8、bytes()

将一个字符串转换成你想要的编码格式的字节。

print(bytes('你好',encoding='utf-8')) #将字符串转换成utf-8编码格式的字节
b'\xe4\xbd\xa0\xe5\xa5\xbd'
print(bytes('你好',encoding='gbk')) #将字符串转换gbk编码格式的字节
b'\xc4\xe3\xba\xc3'

9、chr()

介绍chr()函数之前先看一下ASCII码对照表:

chr()函数就是返回整数对应的ASCII码对照表里的字符,取值范围[0~255]之间的正数。

ord()函数作用正好和chr()函数相反,不再介绍,请看下面例子:

n = chr(65)  #根据十进制找到在ascii码里对应的字符
print(n)
result:A
a= ord("a")  #根据字符找到在ascii码里对应的十进制
print(a)
result:97 

10、compile(source,filename,mode)

将source编译为,代码对象能够通过exec语句来执行或者eval()进行求值。

source:字符串或者对象;

filename:代码文件名称,如果不是从文件读取代码则传递一些可辨认的值;

model:编译代码的种类,可以指定为'exec','eval','single'。

code="for i in range(0,10):print(i)"
cmpcode = compile(code,'','exec')  #可以将字符串转换成python代码执行
print(cmpcode)
result:
<code object <module> at 0x000002A54E938ED0, file "", line 1> 

11、exec()

exec语句用来执行储存在字符串或文件中的Python语句。

exec("print('hello,world')")  #执行exec()里的python语句
result:
hello,world

12、eval()

eval()函数将字符串str当成有效的表达式来求值并返回计算结果。

ret = eval("8*8")    #执行表达式并返回结果
print(ret)
#result:64
t = exec("8*8")    #执行python代码,可以接收或字符串,没有返回值
print(t)
#result:None 

13、divmod(a,b)

divmod(a,b)方法是计算a,b的商和余数,即:a//b 余几,返回结果为元组。以后做网页翻页的时候会。

num = divmod(9,2)    #9//2
print(num)
#result:
(4,1)     #结果为商4余1 

14、enumerate(iterable,start=0)

返回一个枚举对象。iterable必须是序列,迭代器,或者其他支持迭代的对象。

dic = {'name':'jack',
 'age':18,
 'sex':'boy',}
for i in enumerate(dic.keys(),start=0):
 print(i)
#result:
(0, 'name')
(1, 'sex')
(2, 'age') 

15、filter()

对于序列中的元素进行筛选,最终获取符合条件的序列。

filter()  #循环第二个参数,让每个循环元素执行函数,如果函数返回值为True,表示元素合法
filter内部实现方法:
for item in 第二个参数:
 r = 第一个参数(item)
 if r:
 result(item)
return result
#例:
def f1(args):
 if args>22:
 return True
li=[11,22,33,44]
ret = filter(f1,li)
print(list(ret))  #返回值为一个迭代器,所以使用list()函数来返回像上面这种简单的函数可以使用lambda函数来执行:

像上面这种简单的函数可以使用lambda函数来执行:

li = [11,22,33,44]
ret = filter(lambda a:a>22,li) #通过lambda函数处理,lambda是有返回值的,条件成立返回True
print(list(ret)) 

对于列表中字符串跟数字并存的提取方法:

li = [2,32,4,45,22,'tony',33,25,5,76,'liupeng',19,78,'jack',24]
l1 = []
<br>ret = filter(lambda i:type(i) == str,li)      #使用filter函数结合lambda表达式来过滤type为str的元素
print(ret,type(ret))
for i in ret:
 l1.append(i)                    #把过滤掉的str元素导入到新列表中
print(l1)
#result:
<filter object at 0x7f4c5d1abcf8> <class 'filter'>
['tony', 'liupeng', 'jack'] 

li = [11,22,33,44,55,66,77,88,99,90]
def numb(args):
 if args % 2 ==0:      #取列表中偶数值,要想取基数值把0变成1
 return True
ret = filter(numb,li)
print(list(ret))
#result:
[22, 44, 66, 88, 90]
li1 = ['A','','B',None,'C',' ']
def numb1(args):
 if args and args.strip():      # 去空
 return True
ret = filter(numb1,li1)
print(list(ret))
#result:
['A', 'B', 'C'] 

filter主要的功能其实就是进行过滤及筛选。在此进行一段插曲。python中的正则表达式也可以进行过滤跟筛选,主要是面向于字符串的过滤中起到了很好的作用。对于正则表达式打算另起章节具体介绍,在此仅简单列举1-2个案例仅供参考。

小插曲(正则表达式筛选案例):

需求1:取出s变量中的speed跟angle。

import re                       #在这里我们需要提前导入re模块。目的为了是使用re模块中findall方法
s = 'speed=210,angle=150'
m = re.findall(r'(\w*[a-zA-Z]+)\w*',s)      #\w代表匹配字母跟数字,*代表对于前一个字符重复0到无穷次,[a-zA-Z]代表匹配26个包含大小写的字母,而后面的+号表示把匹配到的字母拼接起来
# m = re.findall(r'([a-zA-Z]+)',s)       #上述代码的简化版。不需要指定过度的匹配字符,因为[a-zA-Z]的范围已经是指定了所有字母组合了。
print (m)
#result:
['speed', 'angle']

需求2:从s这个字符串中,把数字跟字符分别提取出来。

import re
s = 'lajsfdhoiqu190821AWJKJE34ijoohoyyuoi1234uh12412io980843'
s1 = re.findall(r'[0-9]+',s)              #使用方法跟需求1中的运用方法基本一致。只不过范围我们从字符转到了字母身上。而在指定字母的时候给出【0-9】的范围即可。
print(s1)
s2 = re.findall(r'([a-zA-Z]+)',s)
print(s2)
#result:
['190821', '34', '1234', '12412', '980843']
['lajsfdhoiqu', 'AWJKJE', 'ijoohoyyuoi', 'uh', 'io']

需求3:从s这个字符串中,把数字跟字符分别提取出来。

import re
relink = '<a href="(.*)">(.*)</a>'
info = '<a href="http://www.baidu.com">baidu</a>'
cinfo = re.findall(relink,info)
print (cinfo)
#result:
[('http://www.baidu.com', 'baidu')]

16、map(函数,可迭代的对象)

我们先看map。map()函数接收两个参数,一个是函数,一个是序列,map将传入的函数依次作用到序列的每个元素,并把结果作为新的list返回。

举例说明,比如我们有一个函数f(x)=x2,要把这个函数作用在一个list [1, 2, 3, 4, 5, 6, 7, 8, 9]上,就可以用map()实现如下:

现在,我们用Python代码实现:

>>> def f(x):
...  return x * x
...
>>> map(f, [1, 2, 3, 4, 5, 6, 7, 8, 9])
[1, 4, 9, 16, 25, 36, 49, 64, 81]

map()传入的第一个参数是f,即函数对象本身。

你可能会想,不需要map()函数,写一个循环,也可以计算出结果:

def f(x):
 return x*x
L = []
for n in [1, 2, 3, 4, 5, 6, 7, 8, 9]:
 L.append(f(n))
print(L)
#result:
[1, 4, 9, 16, 25, 36, 49, 64, 81]

的确可以,但是,从上面的循环代码,能一眼看明白“把f(x)作用在list的每一个元素并把结果生成一个新的list”吗?

所以,map()作为高阶函数,事实上它把运算规则抽象了,因此,我们不但可以计算简单的f(x)=x2,还可以计算任意复杂的函数,比如,把这个list所有数字转为字符串:

>>> map(str, [1, 2, 3, 4, 5, 6, 7, 8, 9])
['1', '2', '3', '4', '5', '6', '7', '8', '9']

只需要一行代码(仅限于python2的版本。python3返回的是个迭代器需要for循环出元素)。

li = [11,22,33,44]
ret = map(str,li)
l1 = []
for x in ret:
 l1.append(x)
print(l1)
#result:
['11', '22', '33', '44']

map结合lambda表达式案例:

li = [11,22,33,44]
new_list = map(lambda a:a+100,li)
print(list(new_list))
#result:
[111,122,133,144]
li = [11, 22, 33]
sl = [1, 2, 3]
new_list = map(lambda a, b: a + b, li, sl)
print(list(new_list))
#result:
[12, 24, 36]

map结合生成器案例:

def func(x,y):
 return x*y*2  #返回结果为x*y的和再成2
li = [1,2,3,4]
li1= [2,3,4,5]
ret = map(func,li,li) # 第一个参数为func函数本身,第二个参数为x(li列表中的每个值),第三个参数为y(li1列表中的每个值)
print(ret.__next__())
for i in ret:
 print(i)
#result:(结果为li列表跟li1列表每个值相乘再成2)
4
12
24
40

17、reduce()

对于序列内所有元素进行累计操作:

li = [11,22,33]
result = reduce(lambda x,y:x + y,li)
print (result)
#result:       #注意在Python3中已经没有了reduce函数
66<br><br>当然也可以通过结合lambda表达式3行解决<br><br>
1
from functools import reduce#python3中已经把reduce踢出了内置函数。需要通过import functools函数来引用reduceli = [11,22,33]result = reduce(lambda x,y:x+y,li)print(result)#result:66

18、isinstance()

判断对象是不是类的实例。

li = [11,22,33]
n = isinstance(li,list)   #判断li是不是list类的实例
print(n)
#result:
True  

19、len()

判断字符串长度。

s = "你好"
print(len(s))     #在python3中len函数既可以取的字符的长度,也可以取字节的长度
         #python2.*中len函数只可以取字节的长度
#result:2
s = "你好"
b = bytes(s,encoding='utf-8')
print(len(b))
#result:6
分别使用2.*和3.*循环“你好”,查看结果:
2.7 for 循环“你好”      #输出6个空字符
3.5 for 循环“你好”查看结果     #输出"字符串结果"

20、max()、min()、sum()

max():取最大值; min():取最小值; sum():取总的值

li=[11,22,33]
print(max(li))      #最大值
33
print(min(li))      #最小值
11
print(sum(li))      #总和
66

21、pow(x,y)

pow()返回x的y次方的值。

print(pow(2,3))      #计算2的3次方
8
print(pow(2,4))      #计算2的4次方
16 

22、round()

round()方法返回浮点数x的四舍五入值。

print(round(2.3))     #四舍五入
2
print(round(2.8))
3

23、random()

random方法返回随机生成的一个实数,它在[0,1]范围内。random的使用一般对于自动生成密码,验证码之类的用的比较多。

import random
print('random:',random.random())
#result: random: 0.7037348886029884
# coding=utf-8
__author__ = 'hillfree'
import random
def testRand():
 # 在[a, b]之间产生随机整数 random.randint(a, b)
 for i in range(5):
  ret = random.randint(100, 999)
  print("random.randint(100, 999) = {0}".format(ret,))
 # 在[a, b]之间产生随机浮点数 random.uniform(a, b)
 for i in range(5):
  ret = random.uniform(1.0, 100.0)
  print("random.uniform(1.0, 100.0) = {0}".format(ret,))
 # 在[0.0, 1.0)之间产生随机浮点数 random.random()
 for i in range(5):
  ret = random.random()
  print("random.random() = {0}".format(ret,))
 # 在样本population中随机选择k个 random.sample(population, k)
 population = {"Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun" }
 for i in range(5):
  ret = random.sample(population, 3)
  print("random.sample(population, 3) = {0}".format(ret,))
 # 在序列seq中随机选择1个 random.choice(seq)
 seq = ("to", "be", "or", "not", 'tobe', 'is', 'a', 'question')
 for i in range(5):
  ret = random.choice(seq)
  print("random.choice(seq) = {0}".format(ret,))
 # 从序列中随机获取指定长度的片断。不修改原有序列。
 # random.sample(sequence, k)
 sentence = "to be or not to be is a question"
 for i in range(5):
  ret = random.sample(sentence, 5)
  print("random.sample(sentence, 5) = {0}".format(ret,))
 # 三角分布的随机数 random.triangular(low, high, mode)
 for i in range(5):
  ret = random.triangular(0, 100, 10)
  print(" random.triangular(0, 100, 10) = {0}".format(ret,))
 # 高斯分布的随机数(稍快) random.gauss(mu, sigma)
 for i in range(5):
  ret = random.gauss(0, 1)
  print(" random.gauss(0, 1) = {0}".format(ret,))
 # beta β分布的随机数 random.betavariate(alpha, beta)
 # 指数分布的随机数 random.expovariate(lambd)
 # 伽马分布的随机数 random.gammavariate(alpha, beta)
 # 对数正态分布的随机数 random.lognormvariate(mu, sigma)
 # 正态分布的随机数 random.normalvariate(mu, sigma)
 # 冯米塞斯分布的随机数 random.vonmisesvariate(mu, kappa)
 # 帕累托分布的随机数 random.paretovariate(alpha)
 # 韦伯分布的随机数 random.weibullvariate(alpha, beta)
if __name__ == "__main__" :
 testRand()

random模块利用random生成一个简单的验证码案例

# import random 导入 随机模块,
 #验证码的操作
random.randint(1,99) #随机数字
temp = '' 定义一个空字付串
for i in range(6): 循环6次
 q = random.randrange(0,4) 自动生成一个0-4的随机数
 if q == 3 or q == 1: 如果随机数等于3 或 1就生成小写字母
  c2 = random.randrange(0,10) 生成 0--10内的随机数
  temp = temp + str(c2) 向变量中添加当前数字对应的ascii码的字符
 else:
  c = random.randrange(65,91) 生成 65-91内的随机数
  z = chr(c)
  temp = temp + z 向变量中添加当前数字对应的ascii码的字符
print(temp)

随机生成密码:

这里用到了除random以外的另外一个模块(string),通过string模块可以更方便的为我们调取字母跟数字。不需要按照上例来自己创建范围来生成数字字母了。

import random
import string
sal = '!@#$%^&*()><?'
def passwd(length):
 chars = string.ascii_letters + string.digits + sal
 #return ''.join(random.choice(chars) for i in range(length))
 return ''.join(random.sample(chars,8))
if __name__ == '__main__':
 for i in range(1):
  print(passwd(8))

24、choice()

choice()方法返回一个列表,元组或字符串的随机项。

import random
#取列表或元组的随机值
print("choice([1, 2, 3, 5, 9]) : ", random.choice([1, 2, 3, 5, 9]))
print("choice('A String') : ", random.choice('A String'))
#result:
choice([1, 2, 3, 5, 9]) : 9     #执行一次值会变一次
choice('A String') : i

25、randrange()

返回指定递增基数集合中的一个随机数,基数缺省值为1,听这个意思不是太好理解,下面举例说明:

import random
#随机输出100到1000间的偶数
print("rangrange(100,1000,2):",random.randrange(100,1000,2))
#随机输出100到1000间的其他数
print("rangrange(100,1000,2):",random.randrange(100,1000,3))
#result:
rangrange(100,1000,2): 260
rangrange(100,1000,2): 511

下面将上面三个函数放在一起,来做一道题,生成6位的随机数,其中包括大写字母,数字?

import random
li= []
for i in range(6):      #循环6次
 temp = random.randrange(65,91)  #random随机数从ascii码里取65到91
 c = chr(temp)      #将随机数找到ascii码表里找到具体字符
 li.append(c)      #追加到空列表里
result = "".join(li)     #再用join的方式将列表转换成字符串
print(result)       #结果全是大写字母 

li = []          #定义空列表
for i in range(6):       #循环6次
 r= random.randrange(0,5)     #生成一个0-4的随机值,然后根据r的值判断数字出现的位置
 if r ==2 or r==4:       #如果第一次循环r==2或者4的时候,条件满足,在列表里随机添加一个数字
  num = random.randrange(0,10)   #生成一个0-9的随机数
  li.append(str(num))
 else:
  temp = random.randrange(65,91)  #如果上面条件不成立,添加字符串
  c = chr(temp)
  li.append(c)
result = "".join(li)
print(result) 

26、zip()

利用每个可迭代元素,制作一个迭代器来聚合元素。

l1 = ['北京',11,22,33]
l2 = ['欢迎',11,22,33]
l3 = ['你',11,22,33]
r=zip(l1,l2,l3)
#print(list(r))
# [('北京', '欢迎', '你'), (11, 11, 11), (22, 22, 22), (33, 33, 33)]
temp = list(r)[0]
ret ="".join(temp)
print(ret)

今天的内置函数就介绍到这,由于还没有学习面向对象编程,一些内置函数会在学完面向对象编程以后,在更新。

总结

以上所述是小编给大家介绍的python 函数中的内置函数及用法详解,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

(0)

相关推荐

  • Python内置函数reversed()用法分析

    本文实例讲述了Python内置函数reversed()用法.分享给大家供大家参考,具体如下: reversed()函数是返回序列seq的反向访问的迭代器.参数可以是列表,元组,字符串,不改变原对象. 1>参数是列表 >>> l=[1,2,3,4,5] >>> ll=reversed(l) >>> l [1, 2, 3, 4, 5] >>> ll <listreverseiterator object at 0x06A9E9

  • python中的内置函数max()和min()及mas()函数的高级用法

    max(iterable, *[, key, default]) max(arg1, arg2, *args[, key]) 函数功能为取传入的多个参数中的最大值,或者传入的可迭代对象元素中的最大值.默认数值型参数,取值大者:字符型参数,取字母表排序靠后者.还可以传入命名参数key,其为一个函数,用来指定取最大值的方法.default命名参数用来指定最大值不存在时返回的默认值. eg a.传入的多个参数的最大值 print(max(1,2,3,4)) 输出 b.1 传入可迭代对象时,取其元素最大

  • 对python中的for循环和range内置函数详解

    如下所示: 1.for循环和range内置函数配合使用 range函数生成一个从零开始的列表, range(4)表示list:0123 range(1,11,2)表示从1开始到11-1为止步长为2的list:13579 即range(i)表示从0开始到i-1的列表,range(m,n)表示从m开始到n-1的列表,range(m,n,t)表示从m开始步长为t到n-1的列表 ''' print('第一次循环输出:') for i in range(4): print(i) print('第二次循环输

  • 深入理解Python3 内置函数大全

    本文主要介绍了Python3 内置函数,分享给大家,具体如下: 内置函数 以下代码以Python3.6.1为例 #coding=utf-8 # builtin_function.py 内置函数 import os def fun(): all([True, False]) # 迭代器(为空or)所有元素为true,返回true => False any([True, False]) # 迭代器任意一个元素为true,返回true => True num = abs(-1.23) # 绝对值 n

  • 使用Python内置的模块与函数进行不同进制的数的转换

    binascii 模块: 它包含一个把二进制数值转换成十六进制的函数,同样也可以反过来转. #binary_value是二进制数值不是字符串,也不是int型的1010 binascii.b2a_hex(binary_value) ##binary_value 一般读二进制文件可以得到 >>'89' <type str> python自带的builtin函数: bin(num)   十进制数值 ===>二进制字符串 bin(10) >> '0b1010' <t

  • Python 内置函数complex详解

    英文文档: class complex([real[, imag]]) Return a complex number with the value real + imag*1j or convert a string or number to a complex number. If the first parameter is a string, it will be interpreted as a complex number and the function must be calle

  • Python max内置函数详细介绍

    Python max内置函数 max(iterable, *[, key, default]) max(arg1, arg2, *args[, key]) Return the largest item in an iterable or the largest of two or more arguments. If one positional argument is provided, it should be an iterable. The largest item in the it

  • Python两个内置函数 locals 和globals(学习笔记)

    Python两个内置函数--locals 和globals 这两个函数主要提供,基于字典的访问局部和全局变量的方式. 在理解这两个函数时,首先来理解一下python中的名字空间概念.Python使用叫做名字空间的东西来记录变量的轨迹.名字空间只是一个字典,它的键字就是变量名,字典的值就是那些变量的值.实际上,名字空间可以象Python的字典一样进行访问 每个函数都有着自已的名字空间,叫做局部名字空间,它记录了函数的变量,包括函数的参数和局部定义的变量.每个模块拥有它自已的名字空间,叫做全局名字空

  • Python学习教程之常用的内置函数大全

    前言 内置函数,一般都是因为使用比较频繁或是元操作,所以通过内置函数的形式提供出来.在Python中,python给我们提供了很多已经定义好的函数,这里列出常用的内置函数,分享出来供大家参考学习,下面话不多说,来一起看看详细的介绍吧. 一.数学函数 abs() 求数值的绝对值 min()列表的最下值 max()列表的最大值 divmod() 取膜 pow() 乘方 round()浮点数 #abs 绝对值函数 输出结果是1 print abs(-1) #min 求列表最小值 #随机一个1-20的步

  • 浅谈使用Python内置函数getattr实现分发模式

    本文研究的主要是使用Python内置函数getattr实现分发模式的相关问题,具体介绍如下. getattr 常见的使用模式是作为一个分发者.举个例子,如果你有一个程序可以以不同的格式输出数据,你可以为每种输出格式定义各自的格式输出函数,然后使用唯一的分发函数调用所需的格式输出函数. 例如,让我们假设有一个以 HTML.XML 和普通文本格式打印站点统计的程序.输出格式在命令行中指定,或者保存在配置文件中.statsout 模块定义了三个函数:output_html.output_xml 和 o

  • Python内置函数——__import__ 的使用方法

    __import__() 函数用于动态加载类和函数 . 如果一个模块经常变化就可以使用 __import__() 来动态载入. 语法 __import__ 语法: __import__(name[, globals[, locals[, fromlist[, level]]]]) 参数说明: name -- 模块名 英文文档: __import__(name, globals=None, locals=None, fromlist=(), level=0) This function is in

  • Python 内置函数进制转换的用法(十进制转二进制、八进制、十六进制)

    使用Python内置函数:bin().oct().int().hex()可实现进制转换. 先看Python官方文档中对这几个内置函数的描述: bin(x) Convert an integer number to a binary string. The result is a valid Python expression. If x is not a Python int object, it has to define an __index__() method that returns

随机推荐