万恶之源 - Python内置函数一

2018-10-29 15:29:57来源:博客园 阅读 ()

新老客户大回馈,云服务器低至5折

内置函数

什么是内置函数?就是python帮我们提供的一个工具,拿过直接用就行,比如我们的print,input,type,id等等.截止到python3.6.2版本

中一共提供了68个内置函数.他们就是python直接提供给我们的,有一些我们已经用过了.有一些还没有用过.还有一我们需要学完面向对象才能继续学习.今天我们认识一下python的内置函数

作用域相关

  locals()     返回当前作用域中的名字

  globals()   返回全局作用域中的名字

迭代器相关

  range()   生成数据

  next()    迭代器向下执行一次,内部实际使用了__next__()方法返回迭代器的下一个项目

  iter()     获取迭代器,内部实际使用的是__iter__()方法来获取迭代器

字符串类型代码的执行

eval()  执行字符串类型的代码,并返回最终结果

print(eval('2+8'))
结果:
10

n = 8
print(eval('n + 10'))
结果:
18

exec() 执行字符串类型的代码 

exec('''
for i in range(10):
    print(i)
''')

# 我们按照python能够识别的语法写代码,这次写入的是字符串也可以执行


exec(''' 

def func():
    print("444")

func()    

''')

结果:
444  

compile()  将字符串类型的代码变异,代码对象能够通过exec语句来执行或者eval()进行求值

'''
参数说明:

    1.resource  #办法   要执行的代码,动态代码片段
    2.文件名,代码存放的文件名,当传入了第一个参数的时候,这个参数给空就可以了
    3.模式,取值有3个
        1.exec 一般放一些流程语句的时候
        2.eval resource只存放一个求值的表达式
        3.single resource存放的代码有交互的时候.mode应为single
'''

code = 'for i in range(10):print(i)'

c1 = compile(code,'',mode='exec')
exec(c1)   # 使用exec没有返回值

code1 = '1+2+4'
c2 =compile(code1,'',mode='eval')

a = eval(c2) # 使用eval有返回值
print(a)

code = 's = input("请输入内容");print(s)'

c1 = compile(code,'',mode='single')

exec(c1)  #使用exec没有返回值

通过上边的测试发现,只要是exec就没有返回值,eval就是有返回值的,compile不怎么常用  

输入和输出相关

  input()  获取用户输入的内容

  print()  打印 输出

内存相关

  hash()  获取对象的哈希值(int.str,bool,tuple)

  id()      获取到对象的内存地址

文件操作相关

  open()   用于打开一个文件,创建一个文件句柄

模块相关

  __import__()   用于动态加载类和函数

帮助

  help()  函数用于查看函数或模块用途的详细说明

调用相关

  callable()  用于检查一个对象是否是可调用的,如果返回True,object有可能调用失败,要是返回False,那调用绝对就完犊子

查看内存属性

  dir()  查看对象的内置属性,方法,访问的是对象的__dir__()方法

基础数据类型相关

数字相关:  

  bool()  将给定的数据转换成bool值,如果不给值.返回False

  int()    将给定的数据转换成int值,如果不给值,返回0

    float()  将给定的数据转换成float值,也就上次小数

  compilex()  创建一个复数,第一个参数为实部,第二个参数为虚部.或者第一个参数直接用字符串来描述复数

进制转换:

  bin()   将给的参数转换成二进制

  otc()  将给的参数转换成八进制

  hex() 将给的参数转换成十六进制

数字运算:

  abs()   求绝对值

  divmode()  返回商和余数

  round()    四舍五入

  pow(a,b)  求a的b次幂,如果有个三次参数,则求万次幂后对第三方个数取余

  sum()      求和

  min()      求最小值

  max()    求最大值

数据结构相关

列表和元祖

  list()   将一个可迭代对象转换成列表

  tuple()  将一个可迭代对象转换成元祖

  reverse()  将一个序列反转,返回反转序列的迭代器

  slice()    列表的切片         

a = '大家好我是武松'
s1 = slice(1,8,2)
print(a[s1])

结果:

家我武

字符串相关:

  str()    将数据转化成字符串

  format()   与具体数相关,用于计算各种小数,精算等

字符串

# 字符串
# print(format('meet','<20'))   #左对齐
# print(format('meet','>20'))   #右对齐
# print(format('meet','^20'))   #居中

结果:
meet                
                meet
        meet        

数值

#数值
print(format(3,'b'))    # 二进制
print(format(97,'c'))   # 转换成unicodezif
print(format(11,'d'))   #十进制
print(format(56))       #和d一样
print(format(11,'n'))   #十进制
print(format(11,'o'))   #八进制

print(format(11,'x'))  # 十六进制(小写字母)
print(format(11,'X'))  # 十六进制(大写字母)

# 浮点数

print(format(1234567890,'e'))  #科学计算法,默认使用6位
print(format(123456789,'0.2e'))# 科学计算,保留2位小数(小写)
print(format(123456789,'0.2E'))# 科学计算,保留2位小数(大写)
print(format(1.23456789,'f')) #小数点计数法,保留6位小数
print(format(1.23456789,'0.2f')) # 小数点计数法,保留2位数
print(format(1.23456789,'0.10f')) # 小数点计数法,保留2位数
print(format(1.23456789e+1000,'F')) # 小数点计数法

bytes()  把字符串转换成bytes类型

s = '你好武大'

bs = s.encode('utf-8')
print(bs)

结果:b'\xe4\xbd\xa0\xe5\xa5\xbd\xe6\xad\xa6\xe5\xa4\xa7'

s1 = bs.decode('utf-8')
print(s1)

结果: 你好武大

bs = bytes(s,encoding='utf-8')
print(bs)

结果: b'\xe4\xbd\xa0\xe5\xa5\xbd\xe6\xad\xa6\xe5\xa4\xa7'
把字符串编码成utf-8

bytearray()  返回一个新字节数组,这个数字里的元素是可变的,并且每个元素的值的范围是0~256

ret = bytearray('meet',encoding='utf-8')
print(ret)
print(ret[0])

结果:
bytearray(b'meet')
109

momoryview()  查看bytes的内存地址

s = memoryview('麻花藤'.encode('utf-8'))
print(s)

# 结果:
# <memory at 0x000001F332E0E288>

ord()  输入字符找带字符编码的位置

print(ord('a'))
print(ord('中'))
print(ord('国'))

结果:
97
20013
22269

对应的是当前编码 

chr()  输入位置数字找出对应的字符

print(chr(97))  # 找到对应位置的字符
print(chr(20013))  # 找到对应位置的字符

# 结果:
a
中

ascii() 是ascii码中的返回值 不是就返回\u

print(ascii('a'))  判断字符串在不在ascii码表中
print(ascii('中'))  

结果:
'a'
'\u4e2d'     如果不存在就返回\u...

repr() 返回一个对象本质的形式

name = 'alex'
print(repr(name))   #返回这个对象本质的表示形式

结果:
'alex'

name = '我叫%r'
print(name%'meet')   %r 用的就是repr
结果:
我叫'meet'

数据集合

  dict() 创建一个字典

  set() 创建一个集合

  frozenset() 创建一个冻结的集合,冻结的集合不能进行添加和删除操作

其他相关

  len()  返回一个对象的元素个数

  enumerate()  获取枚举对象

lst = ['alex','wusir','taibai']

for i,k in enumerate(lst):
    print('这是序号',i)
    print('这是元素',k)

all()  可迭代对象中全部是True,结果才是True

lst = [1,2,3,4,True,0,False]
lst1 = [1,2,3,4,True]
print(all(lst))

print(all(lst1))

结果:
False
True

any()  可迭代对象中有一个是True,就是True 

lst = [1,2,3,4,True,0,False]
lst1 = [1,2,3,4,True]
print(any(lst))

print(any(lst1))

结果:
False
True

zip()  函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元祖,

然后返回由这些元祖组成的内容,如果各个迭代器的元素个数不一致,则按照长度最短的返回

lst1 = [1,2,3]
lst2 = ['a','b','c','d']
lst3 = (11,12,13,14,15)

for i in zip(lst1,lst2,lst3):
    print(i)

结果:
(1, 'a', 11)
(2, 'b', 12)
(3, 'c', 13) 

lambda之后讲解

sorted() 对可迭代对象进行排序

filter()  过滤 

map()  会根据提供的函数对指定的序列做映射

参看质料

  https://www.processon.com/view/link/5b4ee15be4b0edb750de96ac  

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:Python 枚举 enum

下一篇:第九天- 文件操作 r w a 文件复制/修改