python 之 内置函数

那些每天要翻好几次的内置函数

python 为我们提供了68个内置函数,真的不多

函数名字

用法

1.abs()

取绝对值

2.dict()

把数据转换成字典

3.help()

帮助

4.min()

取最小值

5.setattr()

6.all()

1,如果列表中都为true,返回true;

2,空列表返回true(空列表的bool值是False)

7.any()

1,列表中任意一个值是true, 返回true

2,空列表返回False

8.dir()

打印当前程序所有变量,元素

9.hex()

转成16进制

10.next()

11.slice()

切片(三个元素开始结束和步长),先定义切片的规则,再调用

12.divmod()

余数除,整除商和余数

13.sorted()

排序,指定元素,指定方法(时间16:00)自己制定规则

14.ascii()

15.enumerate()

遍历,枚举

16.input()

17.oct()

十进制转转八进制

18.staticmethod()

19.bin

十进制转二进制

20.eval()

按照解释器的规则把字符串转代码,只能处理单行代码

21.exec()

可以执行多行,拿不到返回值(和eval的区别)

22.int()

23.open()

24.str()

25.bool()

26.isinstance()

isinstance(object, classinfo)  函数来判断一个对象是否是一个已知的类型,类似 type()。

27.ord()

返回asicc码表中的位置

28.sum()

求和

29.bytearray()

把字符串在原内存变成可修改的类型,修改之前需要转码

30.filter()

返回你需要的值,过滤。对于序列中的元素进行筛选,最终获取符合条件的序列

31.map()

根据函数做指定序列的映射,遍历序列,对序列中每个元素进行操作,最终获取新的序列。

32.reduce()python3在模块里,

函数会对参数序列中元素进行累积操作。对于序列内所有元素进行累计操作(模块functools)

33.issubclass()

34.pow()

求x的y次方,如果有z,取

35.super()

函数是用于调用父类(超类)的一个方法。

36.bytes()

37.float()

转换成浮点类型

38.iter()

39.print()

默认换行符结尾,end=可以指定结尾方式

39.print()

1,end= 以什么结尾,

2,sep= 以什么分割,中间符号

3,file=可以写入文件

4,flush

40.tuple

变成元祖

41.callable()

判断是否可以调用

42.format()

格式化功能

43.len()

长度

44.property

函数的作用是在新式类中返回属性值。

45.type()

查看类型

46.chr()

47.frozenset()

不可变集合

48.list()

列表

49.range()

创建一个集合

50.vars()

当前变量名单,打印变量名还有值(打印值这是和dir的区别)

51.local()

打印函数所有局部变量

52.globals()

打印函数所有全局变量

53.Classmethod()

54.getattr()

55.repr()

显示形式变了

56.zip()

两个列表整合成一个,一一对应,无对应则抛弃

57.compile()

编译代码

58.reversed()

默认式反转

59.__import__()

60.complex()

转换成复数

61.hasattr()

62.max()

63.round()

保留几位小数

64.delattr()

65.hash()

把一个字符串按特征以算法变成一串数字

66.memoryview()

用于大量数据进行copy时.

67.set()

把一个列表变成集合

68.id()

查看内存地址

68个都在这里了,一点都不多

这样看真的很累,那么分个类吧!!

内置函数

酱紫,把棕色的整理好,就行了,没办法,能力有限,反射相关,和面向对象相关以后补上来

从少的开始吧

作用域相关

获取局部变量和全局变量,得到的是一个字典

作用域相关(2)(1)

globals()--获取全局变量的字典

locals()--获取执行命令所在命名空间内的局部变量的字典


迭代器/生成器相关

迭代器_生成器相关(3)

range(start, stop[, step])

Python3 range() 函数返回的是一个可迭代对象(类型是对象),而不是列表类型, 所以打印的时候不会打印列表。

Python3 list() 函数是对象迭代器,可以把range()返回的可迭代对象转为一个列表,返回的变量类型为列表。

Python2 range() 函数返回的是列表。


iter()函数用来生成迭代器。

next()返回迭代器的下一个项目。


其他

其他(12)(2)

字符串类型代码的执行

eval(source,globals,locals)执行字符串类型的python代码,并返回结果

res = eval('1+2+3+4')
print(res)

exec(object,globals,locals)执行存储在字符串或者文件中的python代码(当然包括多行代码),返回值None

相比eval,可以执行更复杂的代码

res = exec('1+2+3+4')
print(res)
exec('print(1+2+3+4)')
compile(source, filename, mode, flags=0, dont_inherit=False, optimize=-1)

source:字符串或AST对象,表示需要进行编译的python代码

filename:指定需要编译的代码文件,如果不是文件读取代码则传递一些可辨认的值。

mode:用于标识必须当做那类代表来编译;如果source是由一个代码语句序列组成,则指定mode=‘exec’,如果source由单个表达式组成,则指定mode=‘eval’;如果source是由一个单独的交互式语句组成,则指定modo=‘single’。

必须要指定mode,不然肯定会报错。

s = """              #一大段代码
for x in range(10):
    print(x, end='')  
print()
"""
code_exec = compile(s, '<string>', 'exec')   # 必须要指定mode,指定错了和不指定就会报错。
code_eval = compile('10 + 20', '<string>', 'eval')   # 单个表达式
code_single = compile('name = input("Input Your Name: ")', '<string>', 'single')   # 交互式

a = exec(code_exec)  # 使用的exec,因此没有返回值
b = eval(code_eval)

c = exec(code_single)  # 交互
d = eval(code_single)

print('a: ', a)
print('b: ', b)
print('c: ', c)
print('name: ', name)
print('d: ', d)
print('name; ', name) #执行前,name 是报错的状态
>>> #流程语句使用exec
>>> code1 = 'for i in range(0,10): print (i)'
>>> compile1 = compile(code1,'','exec')
>>> exec (compile1)
3
7


>>> #简单求值表达式用eval
>>> code2 = '1 + 2 + 3 + 4'
>>> compile2 = compile(code2,'','eval')
>>> eval(compile2)


>>> #交互语句用single
>>> code3 = 'name = input("please input your name:")'
>>> compile3 = compile(code3,'','single')
>>> name #执行前name变量不存在
Traceback (most recent call last):
  File "<pyshell#29>", line 1, in <module>
    name
NameError: name 'name' is not defined
>>> exec(compile3) #执行时显示交互命令,提示输入
please input your name:'pythoner'
>>> name #执行后name变量有值
"'pythoner'"


输入和输出

input()函数接受一个标准输入数据,返回为 string 类型。

print(self, *args, sep=' ', end='\n', file=None)
   file:  默认是输出到屏幕,如果设置为文件句柄,输出到文件
   sep:   打印多个值之间的分隔符,默认为空格
   end:   每一次打印的结尾,默认为换行符,设置为空,就不换行了(2.0是在末尾加逗号)
   flush: 立即把内容输出到流文件,不作缓存
打印进度条
import time
for i in range(0,101,2):  
     time.sleep(0.1)
     char_num = i//2      #打印多少个'*'
     per_str = '\r%s%% : %s\n' % (i, '*' * char_num) if i == 100 else '\r%s%% : %s'%(i,'*'*char_num)
     print(per_str,end='', flush=True)
#小越越  : \r 可以把光标移动到行首但不换行(\r 是回车)


内存相关

id(o) o是参数,返回一个变量的内存地址

hash(o) o是参数,返回一个可hash变量的哈希值,不可hash的变量被hash之后会报错。

hash函数会根据一个内部的算法对当前可hash变量进行处理,返回一个int数字。

*每一次执行程序,内容相同的变量hash值在这一次执行过程中不会发生改变


数据类型相关

type()type(o) 返回变量的数据类型

文件操作相关

f = open(file,mode=,encoding=)打开一个文件,返回一个文件操作符(文件句柄)

操作文件的模式有r,w,a,r+,w+,a+ 共6种,每一种方式都可以用二进制的形式操作(rb,wb,ab,rb+,wb+,ab+)(w+并没有什么卵用)

可以用encoding指定编码.


模块导入相关

__import__(name[, globals[, locals[, fromlist[, level]]]])

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

如果一个模块经常变化就可以使用 __import__() 来动态载入。


帮助方法相关

help()

在控制台执行help()进入帮助模式。

可以随意输入变量或者变量的类型。

输入q退出或者直接执行help(o),o是参数,查看和变量o有关的操作。。。

和调用相关

callable(o)

callable(o),o是参数,看这个变量是不是可调用。

如果o是一个函数名,就会返回True


查看参数所属类型的所有内置方法

dir() 默认查看全局空间内的属性,也接受一个参数,查看这个参数内的方法或变量

vars()当前变量名单,打印变量名还有变量的值(打印值,这是和dir的区别)

和数据类型相关

和数字相关

数字——数据类型相关:bool,int,float,complex(转化成复数形式)

数字——进制转换相关:bin,oct,hex

数字——数学运算:abs,divmod,min,max,sum,round,pow

和数据结构相关

列表和元组:list和tuple

列表和元组相关的:reversed,slice

字符串相关的:str,format,bytes,bytearry,memoryview,ord,chr,ascii,repr

字典和集合:dict,set,frozenset

字典和集合相关:len,sorted,enumerate,all,any,zip,filter,map

基础数据类型相关(38)

数字——数据类型相关

bool,int,float,complex(转化成复数形式)

bool 将给定参数转换成布尔值,返回True 和 Flase

int

float

complex

数字——进制转换相关

bin,oct,hex

bin将一个整型或者长整型转成二进制

oct将一个整数转换成八进制

hex用于将十进制转换成16进制

数字——数学运算

abs,divmod,min,max,sum,round,pow

abs 求绝对值

divmod 返回商和余数

m = divmod(8, 3)
print(m)

min

max

sun

round 指定浮点数,转换成指定位数的小数点位数

pow 函数是计算x的y次方,如果z在存在,则再对结果进行取模,其结果等效于pow(x,y) %z

和math模块的 math.pow()相似

print(pow(2, 3, 2))
# 等同于
print(eval('2**3%2'))

列表和元组

list和tuple

list

tuple

列表和元组相关的

reversed,slice

reversed 反转可迭代对象

slice函数实现切片对象,主要用在切片操作函数里的参数传递。

slice(start, stop[, step])
参数:开始,结束,步长

字符串相关的

str,

format,格式化  格式化字符串famat用法

bytes,bytes是Python 3中特有的,Python 2 里不区分bytes和str。

bytes 和 bytearray

bytearry

函数返回一个新的 bytes 对象,该对象是一个 0 <= x < 256 区间内的整数不可变序列。它是 bytearray 的不可变版本

bytes([source[, encoding[, errors]]])

bytearry,bytearray和bytes不一样的地方在于,bytearray是可变的。

memoryview,函数返回给定参数的内存查看对象

ord,返回字符在编码表里的数值

ord()函数是 chr() 函数(对于8位的ASCII字符串)或 unichr() 函数(对于Unicode对象)的配对函数,它以一个字符(长度为1的字符串)作为参数,返回对应的 ASCII 数值,或者 Unicode 数值,如果所给的 Unicode 字符超出了你的 Python 定义范围,则会引发一个 TypeError 的异常。

chr,用一个范围在 range(256)内的(就是0~255)整数作参数,返回一个对应的字符。

print(ord('0'), ord('1'), ord('a'))   # 转换成编码
print(chr(0x30), chr(0x31), chr(0x61))   # 十六进制

print(chr(48), chr(49), chr(97))       # 十进制


ascii, ascii(object)

ascii() 函数类似 repr() 函数, 返回一个表示对象的字符串,

但是对于字符串中的非 ASCII 字符则返回通过 repr() 函数使用 \x, \u 或 \U 编码的字符。

生成字符串类似 Python2 版本中 repr() 函数的返回值。

repr,函数将对象转化为供解释器读取的形式。

repr(object)

返回一个对象的 string 格式。

字典和集合

dict,

set,函数创建一个无序不重复元素集,可进行关系测试,删除重复数据,还可以计算交集、差集、并集等。

frozenset  冷冻集合,不可变集合

字典和集合相关

len,

sorted,  语法sorted(iterable, key=None, reverse=False) 

函数对所有可迭代的对象进行排序操作。

sort 与 sorted 区别:

sort 是应用在 list 上的方法,sorted 可以对所有可迭代的对象进行排序操作。

list 的 sort 方法返回的是对已经存在的列表进行操作,

而内建函数 sorted 方法返回的是一个新的 list,而不是在原来的基础上进行的操作。

元数据不变

reverse = True 降序 , reverse = False 升序(默认)

enumerate,遍历可迭代对象

all, 语法 all(iterable)

用于判断给定的可迭代参数 iterable 中的所有元素是否都为 TRUE,如果是返回 True,否则返回 False。

有一个Flase 返回Flase

元素除了是 0、空、FALSE 外都算 TRUE。

注意:空元组、空列表返回值为True,这里要特别注意。

any,语法  any(iterable)

函数用于判断给定的可迭代参数 iterable 是否全部为 False,则返回 False,

如果有一个为 True,则返回 True。

如果都为空、0、false,则返回false,如果不都为空、0、false,则返回true。

zip,语法  zip([iterable, ...])

函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表

可以是一个或者多个对象

如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,

利用 * 号操作符,可以将元组解压为列表。

>>>a = [1,2,3]
>>> b = [4,5,6]
>>> c = [4,5,6,7,8]
>>> zipped = zip(a,b)     # 打包为元组的列表
[(1, 4), (2, 5), (3, 6)]
>>> zip(a,c)              # 元素个数与最短的列表一致
[(1, 4), (2, 5), (3, 6)]
>>> zip(*zipped)          # 与 zip 相反,可理解为解压,返回二维矩阵式
[(1, 2, 3), (4, 5, 6)]


filter,

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

li = [11, 22, 33]

new_list = filter(lambda arg: arg > 22, li)

map,

遍历序列,对序列中每个元素进行操作,最终获取新的序列。

li = [11, 22, 33]

new_list = map(lambda a: a + 100, li)

reduce,

对于序列内所有元素进行累计操作(python3需要调用模块functools)

import functools
li = [11, 22, 33]

result = functools.reduce(lambda arg1, arg2: arg1 + arg2, li)


总结



大神推荐的总结
但是在这里,我还是以自己的一点经验之谈,把几个平时工作中相对更常用的方法推荐一下,请务必重点掌握:

其他:input,print,type,hash,open,import,dir

str类型代码执行:eval,exec

数字:bool,int,float,abs,divmod,min,max,sum,round,pow

序列——列表和元组相关的:list和tuple

序列——字符串相关的:str,bytes,repr

序列:reversed,slice

数据集合——字典和集合:dict,set,frozenset

数据集合:len,sorted,enumerate,zip,filter,map
posted @ 2018-05-25 15:31  游小刀  阅读(416)  评论(0编辑  收藏  举报
levels of contents