内置函数
截止到python版本3.6.2,现在python一共为我们提供了68个内置函数。
1 作用域相关 2: locals() globals()
基于字典的形式返回局部变量和全局变量
globals() 全局作用于中的变量 全局
locals() 局部作用域变量 本地
在外部执行 --------locals() globals() 是一样的
在局部 函数内执行 ------locals() 是局部的变量 函数内的名字 ,globals() 始终不变
2 迭代器,生成器 3:
range()--------一个可迭代对象
next() ----------
iter() ------------
注意 在python里要少使用 __xxx__() 的方法 内置的特殊成员
3 其他函数 12:
字符串类型 代码的执行 3
# 执行了 字符串 数据类型 的python代码
exec() 没有返回值 -----执行语句
eval() 有返回值 ------求值语句 # import os 检测有没有 判断
compile('hello') --------交互式语句
# 编译 compile(code,'','exec')
# 需要对某个字符串类型的python代码多次执行的时候,需要用compile先编译一下 ----字节码
输入 输出 2
input() ---- py2中 raw_input 和 py3 的 input 一样
print(value,file,sep=‘’,end=‘\n’,flush=False)
sys.stdout-->>输到屏幕终端上
===================
本来print() 会最后一起写入
sys.stdout.flush====>> 立刻写 实时写
===================
import time
import sys
f=open(r'1.txt','w',encoding='utf-8')
for i in range(0,101,2):
time.sleep(0.1)
char_num = i//2 #打印多少个#
per_str = '\r%s%% : %s'%(i,'|'*char_num)
print(per_str,end='', file=sys.stdout, flush=False)
print('*_*','A','^_^','@ @',sep='|',file=f,end=' ',flush=True)
内存相关 2
内存相关
hash() 得到一个哈希值 ------ 用来查询 直接有对应的hash内存---读取数据
数据库
id() 身份运算----- is 不仅比较数据值是否相等 还会比较 内存指向
文件操作
open(file,mode='w',encoding='utf-8')
模块导入
__import__('time')
帮助模块
help()
调用相关
callable()-----看看能不能被调用--函数
查看内置属性
dir()
5 数值相关的内置函数 14:
数学运算相关 7个
abs() 求绝对值
divmod() 分页应用 求整 并且 求余 (商,余)
round(2.3455,3) 精确到小数后的第几位
pow(x,y,z) x**y%z
sum(iterator,start) 求和 ---尽量用迭代器 一个一个的计算 | start 本钱本息 初始值
min() print(min([1,-5,3],key=abs)) # key是一个函数 用函数来限定 key的规则
max() print(max([1,-5,3],key=abs)) # key是一个函数 用函数来限定 key的规则
数据类型 4个
bool() -----布尔值
int()
float()
complex() ----复数
进制转换 3个
bin()
oct()
hex()
6 数据类型相关 24:
序列 13
列表和元组
# list()
# tuple()
相关内置函数
reversed(iterator) ---- 返回一个生成器
li=[1,2,3,4]
li=list(reversed(li))
print(li)
slice(1,5,2) ----- 切片模型
字符串 bytes 9
str()
format() 将数值进行格式化显示
# print(format('Hello','<10')) # 左对齐
# print(format('Hello','>10')) # 右对齐
# print(format('Hello','^10')) # 居中
bytes()
# by=bytes(s,encoding='gbk') # 网络传输 只能传送字节 ---需要转换 为 bytes
# my_str=by.decode('gbk') 转换回去
bytearray
# s='alex'
# ret=bytearray(s,encoding='utf-8')
# print(s,id(s))
# ret[0]=65
# s1=ret.decode('utf-8')
# print(s1,id(s1))
memoryview()
# ret = memoryview(bytes('你好',encoding='utf-8'))
# print(len(ret))
# print(bytes(ret[:3]).decode('utf-8')) # 切片不会新建一个列表
# print(bytes(ret[3:]).decode('utf-8'))
ord('A') -->> 转换为ascii码
chr(97) -->> 转换为字符
ascii()---->>
# print(ascii('你好')) #'\u4f60\u597d'
repr()----%r 格式化输出
数据集合 3
-数据集合 3
dict()
set()
frozenset() ---- 可以哈希
相关内置函数 8
all() 所有为真的时候才是真的
any() 有任何一个为真 就为真
zip(iter1,iter2,iter3,..)
dic={'a':2,'b':3}
li=[1,2,3]
print(list(zip(dic,li)))
sorted(iterator,key=len,reverse=False) --- 函数有返回值,生成一个新的列表
li.sort() --->> 原列表会改变
len()
map()
enumerate()
filter()
# reduce
注意 :与lambda函数经常一起使用的: map filter reduce zip enumerate
filter 条件过滤
filter( lambda n:n%2==0 ,iterator)
li=[' ','a',(1,2),{1,2},'D',[],{},None]
def f(data):
if type(data)==str:
if data.strip(): # not data.isspace ===== 空格.strip()-->> 变成空''
return data
elif data:
return data
filter_0=filter(f,li)
print(list(filter_0))
map 新计算规则 映射关系 + 数列
li=[1,2,3,4,5,6,7]
re=map(lambda n:n**2 , li)
print(list(re))
enumerate() 增加序号
se={'a':1,'b':3,'c':7}
for num,goods in enumerate(se,start=10):
print(num+1,goods,se[goods])
reduce() 累加
from functools import reduce
li=[1,2,3,4,5,6,7,8,9,10]
print(reduce(lambda x,y:x+y,li,10))
zip() 拉链
--- key ,value ===>> 元组 用来比较 键值对 zip() 函数的返回值是 一个生成器 注意for循环 遍历后就没有值了
dic={
'alex':8000,
'wusir':3000,
'yuan':3000,
}
#
g=zip(dic.values(),dic.keys()) # values放到前边
print(max(g)[-1])
匿名函数
一句话 python 表达式
三元运算
各种推导式 生成器表达式
一句话函数 lambda
结构 f = lambda n(变量): n**n(返回值,可以是三元运算)
print(l(10))
例子
max()
dic={'k1':10,'k2':20,"k3":40}
print(max(dic,key=lambda k:dic[k]))
z=zip(dic.values(),dic.keys()) # z是一个生成器
print(max(z)[-1]) # 这里的z 在用了max之后 相当于已经把z遍历完了,已经没有内容
print(list(z)) # 所以这里再去打印已经是 [] 空列表