python的内置函数一共有68个,这里先学习55个
作用域相关:locals()和globals()
locals() 返回本地作用域中的所有名字
globals() 返回全局作用域中的所有名字
迭代器生成器相关:range() 、iter()、next()
range() 可迭代的
iter() 可迭代的.__iter__()就能得到一个迭代器
next() 迭代器.__next__()就能得到一个值 == next()
查看内容:dir()
dir() 查看一个对象拥有的方法
调用相关:callable()、help()
callable() 主要用来检验函数能否被调用
help() 查看函数帮助
def func(): print("hello") print(callable(func)) help(func())
ps:某个方法属于某个数据类型的变量,就可以用.调用,如果某个方法不依赖于任何数据类型,就可以直接调用,那么它就是内置函数或自定义函数
文件操作相关:open()、close()
f = open('文件名',打开方式,编码方式) 打开方式有r,w,a,r+,w+,a+六种,得到一个文件句柄
记得使用完后要关闭文件释放内存。f.close()
内存相关:id()、hash()
id()查看变量的内存地址
hash()判断变量是否可哈希,不可哈希时会报错,可哈希时返回一个int类型的数字
对于相同可哈希数据的哈希值在一次程序的执行过程中总是不变的
输入输出相关:input()、print()
input()用户输入,注意输入的是字符串,根据后续要求进行转换使用
print()输出
1、print()中end的用途
print('123',end='') # end='',在print中end默认是换行符,这里转换成空字符 print('456')
2、print()中sep的用途
print(1,2,3,4,sep='q') # 指定输出多个值中间的分隔符
3、print()中flush的用途
print(' 222 ',flush=True) # 立刻把内容输出到流文件,不做缓存
4、print()中file的用途
f = open('file', 'w') print('aaaa', file=f) # 可以指定打印的文件位置 f.close()
print()代码小练习——打印进度条
import time for i in range(0,101,2): time.sleep(0.1) num = i//2 # \r可以使输出时的光标一直定位在首位 str = '\r进度%s%% : %s\n'% (i,'*'*num) if i==100 else '\r进度%s%% : %s'% (i,'*'*num) print(str,end='',flush=True)
字符串类型的代码执行:exec()、eval()、compile()
exec()可以执行()内的字符串python语句,没有返回值
print(exec('1+2')) # 没有返回值,输出None exec("print('haohao')") # 输出haohao
eval()和exec()一样可以执行字符串语句,不同点是有返回值
print(eval('1+2+3+4'))
注意:eval只能用在明确执行的代码是什么的时候使用,不安全,exec适合简单流程控制,eval适合有结果的简单运算
compile()编译,对字符串的代码进行编译,然后用eval或exec执行
compile(source,filename,model),source参数可以传递一些想要执行的变量或字符串;filename参数是代码文件名称,在source参数传递时可以写空字符;model是指定编译代码的种类,可以指定为 ‘exec’,’eval’,’single’。当source中包含流程语句时,model应指定为‘exec’;当source中只包含一个简单的求值表达式,model应指定为‘eval’;当source中包含了交互式命令语句,model应指定为'single'。
c1 = compile('for i in range(10):print(i)', '', 'exec') # 简单流程控制语句 exec(c1) c2 = compile('1+2+3+4', '', 'eval') # 简单运算,有返回值 print(eval(c2)) c3 = compile('user_input = input("请输入:")', '','single') exec(c3) print(user_input) # 编译前没有变量user_input,用户输入后就有了
数字相关
复数complex() 复数无法比较大小
浮点数(有限小数或无限循环小数)不是小数(比浮点数多一个无限不循环小数)
进制转换:bin()、oct()、hex()
bin(o) o指变量,将o转换为二进制
oct(o) o指变量,将o转换为八进制
hex(o) o指变量,将o转换为十六进制
数学运算
abs() 取绝对值
divmod(a,b) 接收两个参数a,b(被除数,除数),返回两个参数( 商,余)
round() 精确到几位小数,会四舍五入 eg:(3.145,2)
pow() 求幂运算 (2,3) 即2的3次方 ,(2,3,3) 即2的3次方对3取余
sum() 接收可迭代类型参数求和 eg:sum([1,2],10) 即对1和2求和,从10开始相加,结果为13
min() 求参数中的最小值,可以分开接收参数,也可以接收可迭代类型的参数,min函数里的key可以设定min中参数先执行的函数
print(min(-1, 2, 3, -4, key=abs)) # 先对min里的参数进行取绝对值再比较大小,但返回结果是原来的参数
max() 用法同min(),求参数中的最大值
ps:面试题小知识补充
字符串可以比较大小,但只是比较首字母的ascii码
元组不能比较大小
在面试题时要注意:可以通过print 后有没有()判断是python2还是3
可迭代类型取值方法:next()、for()、数据类型的强制转换
l=range(100) list(l[0:3])# 取第一到第三个元素,可迭代类型可以通过数据类型强制转换进行切片操作 l1=list(l[:]) # 取出所有元素
判断dict中有没有某个key,用in/get
is和==区别 :is是比较内存地址,==是比较值
默认参数的陷阱面试题
def func(a, l=[]): # 本题除了考察默认参数之外还主要考察了python中变量的赋值是赋予了变量地址 l.append(a) return l l1 = func(10) l2 = func('1234',[]) l3 = func('a') print(l1) print(l2) print(l3)