python内置函数

print(locals()) #返回本地作用域中的所有名字
print(globals()) #返回全局作用域中的所有名字
global 变量
nonlocal 变量

 

迭代器.__next__()
next(迭代器)
迭代器 = iter(可迭代的)
迭代器 = 可迭代的.__iter__()

 

range(1,2)是可迭代的,不是迭代器

 

help()帮助

help(str)

 

dir() 查看一个变量拥有的方法
print(dir([]))
print(dir(1))

 

callable()检查一个变量是否为函数(是否能被调用)

def func():pass
print(callable(func))

 

id()查看内存地址

 

hash()可以对字符串,元组哈希,每哈希一次它的值就不一样

字典的寻址方式:key进行hash,将value存在hash地址上,通过hash值来找到value

python内置函数

 

import time
t = __import__('time')
print(t.time())

 

某个方法属于某个数据类型的变量,就用.调用
如果某个方法不依赖于任何数据类型,就直接调用 —— 内置函数 和 自定义函数

 

print('我们的祖国是花园',end='') #指定输出的结束符
print('我们的祖国是花园',end='')
print(1,2,3,4,5,sep='|') #指定输出多个值之间的分隔符
f = open('file','w')
print('aaaa',file=f)  #默认是打印到屏幕,如果指定文件,打印内容会打印到指定文件中
f.close()

 

eval('print(123)')
exec('print(123)')
print(eval('1+2+3+4')) # 有返回值
print(exec('1+2+3+4')) #没有返回值
exec和eval都可以执行 字符串类型的代码
eval有返回值 —— 有结果的简单计算
exec没有返回值 —— 简单流程控制
eval只能用在你明确知道你要执行的代码是什么(不安全,建议不使用)

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

code1 = 'for i in range(0,10): print (i)'
compile1 = compile(code1,'','exec')
exec(compile1)

code2 = '1 + 2 + 3 + 4'
compile2 = compile(code2,'','eval')
print(eval(compile2))

code3 = 'name = input("please input your name:")'
compile3 = compile(code3,'','single')
exec(compile3) #执行时显示交互命令,提示输入
print(name)
name #执行后name变量有值
"'pythoner'"

 

复数 —— complex

 

浮点数(有限循环小数,无限循环小数) != 小数 :有限循环小数,无限循环小数,无限不循环小数
浮点数
354.123 = 3.54123*10**2 = 35.4123 * 10
f = 1.781326913750135970
print(f)

如果小数特别长,后面可能不准,因为二进制转换问题导致,所有语言都有这个问题

 

print(bin(10))  #二进制
print(oct(10))  #8进制
print(hex(10))  #16进制

0b1010  #0b代表二进制
0o12 #0o代表8进制
0xa   #0x代表16进制

print(abs(-5)) #绝对值
print(abs(5))

 

print(divmod(7,2)) # div除法 mod取余
print(divmod(9,5)) # 除余

(3, 1)
(1, 4)

 

print(round(3.14159,3)) #取小数点后3位,四舍五入

3.142

 

print(pow(2,3))   #pow幂运算  == 2**3
print(pow(3,2))
print(pow(2,3,3)) #幂运算之后再取余
print(pow(3,2,1))

8
9
2
0

 

sum(iterable,start) 求和,只能传两个参数,第一个是可迭代对象

ret = sum([1,2,3,4,5,6])
print(ret)

ret = sum([1,2,3,4,5],6)
print(ret)

21
21

 

print(min(1,2,3,-4))
print(min(1,2,3,-4,key = abs)) #以绝对值来找最小值

print(max(1,2,3,-4))
print(max(1,2,3,-4,key = abs))#以绝对值来找最大值

-4
1
3
-4

 

reversed()
l = [1,2,3,4,5]
l.reverse()
print(l)

l = [1,2,3,4,5]
l2 = reversed(l)
print(l2)

保留原列表,返回一个反向的迭代器

使用for对列表的打印

for i in l2:
print(i)

[5, 4, 3, 2, 1]

<list_reverseiterator object at 0x000001B7A308A208>

5
4
3
2
1

切片,slice只是定义一个规则

l = (1,2,23,213,5612,342,43)
sli = slice(1,5,2)
print(l[sli])
print(l[1:5:2])

 

format-https://www.cnblogs.com/Eva-J/articles/7266245.html

 

bytes 转换成bytes类型
我拿到的是gbk编码的,我想转成utf-8编码
print(bytes('你好',encoding='GBK')) # unicode转换成GBK的bytes
print(bytes('你好',encoding='utf-8')) # unicode转换成utf-8的bytes

python内置函数

 

 

网络编程 只能传二进制
照片和视频也是以二进制存储
html网页爬取到的也是编码
b_array = bytearray('你好',encoding='utf-8')
print(b_array)
print(b_array[0])
'\xe4\xbd\xa0\xe5\xa5\xbd'
s1 = 'alexa'
s2 = 'alexb'

bytearray修改字符串的时候可以节省内存

 

print(ord('好')) #按照Unicode转成数字
print(ord('1')) #按照Unicode转成数字
print(chr(97)) #按照Unicode转成字符

22909
49
a

 

print(ascii('好')) #只要是ascii码的内容就打印出来,不是就转换成‘\u’
print(ascii('1'))

'\u597d'
'1'

 

%r就调用了repr,原本是什么类型,打印出来就是什么类型,原封不动调用

name = 'egg'
print('你好%r'%name)
print(repr('1'))
print(repr(1))

你好'egg'
'1'
1

 

frozenset 不可变集合,可以作为字典的key

 

all(接收可迭代对象) #如果里面有一个为False那么返回False

any(接收可迭代对象) #如果里面有一个为True那么返回True

 

返回是可迭代对象,一一定义,如果是字典那么只会打印key值

l = [1,2,3,4,5]
l2 = ['a','b','c','d']
l3 = ('*','**',[1,2])
d = {'k1':1,'k2':2}
for i in zip(l,l2,l3,d):
print(i)

(1, 'a', '*', 'k1')
(2, 'b', '**', 'k2')

 

 filter(只能传函数名,需要判断的可迭代对象) #如果为True就留下,返回的结果是迭代器

def is_odd(x):
return x % 2 == 1

def is_str(s):
return s and str(s).strip()

ret = filter(is_odd, [1, 6, 7, 12, 17])
ret = filter(is_str, [1, 'hello','',' ',None,[], 6, 7, 'world', 12, 17])
print(ret)
for i in ret:
print(i)

 

map(函数名,可迭代对象) #对可迭代对象进行判断,返回迭代器

ret = map(abs,[1,-4,6,-8])
print(ret)
for i in ret:
print(i)

 

filter 执行了filter之后的结果集合 <= 执行之前的个数
filter只管筛选,不会改变原来的值
map 执行前后元素个数不变
值可能发生改变

 

key的内容是以绝对值排序

l = [1,-4,6,5,-10]
l.sort(key = abs) # 在原列表的基础上进行排序,不生成新的列表
print(l)

[1, -4, 5, 6, -10]

 

print(sorted(l,key=abs,reverse=True))      # 生成了一个新列表 不改变原列表 占内存
[-10, 6, 5, -4, 1]

l = [' ',[1,2],'hello world']
new_l = sorted(l,key=len) #按照长度排序,key=函数名(可自定义)
print(new_l)

[[1, 2], '   ', 'hello world']


匿名函数
lambda 形参1,形参2: 返回表达式

普通函数

def add(x,y):
  return x+y

print(add(1,2))

修改成匿名函数

add = lambda x,y:x+y
print(add(1,2))

 

dic={'k1':10,'k2':100,'k3':30}
def func(key):
return dic[key]
print(max(dic,key=func)) #根据返回值判断最大值,返回值最大的那个参数是结果
print(max(dic,key=lambda key:dic[key]))