一、与作用域有关

1.locals()

当前作用域的值

2.globals()

全局作用域的值

print(locals())
print(globals())

二、与迭代器/生成器有关

1.next()

与双下方法__next__()一样,next(iterator/generator)

def generator():
    for i in range(10):
        yield i


g = generator()
print(next(g))     # g.__next__()

2.iter()

与__iter__()方法一样,可迭代对象->迭代器

from collections.abc import Iterator

li = list(range(10))
li = iter(li)       # li.__iter__()
ret = isinstance(li, Iterator)
print(ret)

3.range()

可以看成有序数字的list

三、其它

1.dir()

含参数,获取当前参数的属性、方法,无参数获取当前作用域的变量、方法等,注意:不包含内置命名空间的变量和方法

2.help()

help(内容),获取帮助文档,和Linux一样

3.callable()

callable(内容),判断是否可调用,返回值True,False

4.import

导入模块

5.open()

打开文件

6.与内存有关

1)hash(数据),查看是否可哈希,可哈希输出值,不可哈希报错

_hash = hash(123)   # 123可哈希
print(_hash)

_hash = hash([])    # list不可哈希
print(_hash)

2)id()

查看值(变量、函数)的内存地址

7.输入输出

1)input()

用户交互

2)print()

end:是默认参数,end = '\n'

for i in range(4):
    print(i, end=' ')   # 输出结果:0 1 2 3

sep:sep是默认参数,sep = ' '

print(1, 2, 3, 4, 5, sep='')   # 去除1,2,3,4,5之间的空格

file:file也是默认参数,file = 'None',终端的实质是文件

f = open(file='f_1', mode='w', encoding='utf-8')
print('Hello, World', file=f)       # 文件是f
f.close()

flush:flush是默认参数,flush = False,值为False时,一起打印;为True时,一个一个打印

# 简单的进度调
import time
for i in range(0, 101, 2):
    time.sleep(0.1)
    char_num = i//2
    ret = "\r%s%%:  %s\n" % (i, '*' * char_num)if i == 100 else '\r%s%%: %s' % (i, '*' * char_num)
    print(ret, end='', file=True)

8.执行字符串-不建议使用

1)eval(),有返回值,用于计算

s = '1+2+3+4'
ret = eval(s)
print(ret)

2)exec(),无返回值,用于流程控制

s = """
for i in range(5):
    print(i)
"""
exec(s)

3)compile()

编译给eval()和exec()使用,几乎不用

四、与数字相关

1.数据类型

1).bool

2).int

3).float

包含:有序小数,无限循环小数

4).complex

复数:实数+虚数(10j),几乎用不到

2.进制转化

1)bin()

十进制->二进制

2)oct()

十进制->八进制,不常用

3)hex()

十进制->十六进制

print(bin(10))      # 以0b开头
print(oct(10))      # 以0o
print(hex(10))      # 以0x

3.数学运算

1).abs()

求绝对值

2).divmod(a,b)

div(除) mod(模/余),除余,a//b 和 a%b

a = divmod(10, 3)
print(a)    # 输出结果:(3,1)

3).round(a,b)

求float的精度,float a,取小数点后b位

a = round(3.14159, 2)
print(a)    # 输出3.14

4).pow(a,b)

a的b次幂,a**b

a = pow(2, 5)
print(a)

power(a, b, c)

a**b%c

5).sum()

sum(iterable, start)

start从几开始,若不写则从0开始,若没有iterable,返回start

a = sum(list(range(5)))
print(a)
a = sum(list(range(5)), 10)     # start 不是关键字参数
print(a)

6).max()

求最大值,可以用iterable或*args

key = None为默认参数,key = func/函数名

print(max(1, 2, 3, 4))  # 4
print(max([1, 2, 3, 4]))    # 4
print(max(1, 2, 3, 4, -5))  # 4
print(max(1, 2, 3, 4, -5, key = abs))     # -5

7)min()

求最小值,用法和max()一样,最好打散*

print(min(1, 2, 3, 4))  # 1
print(min([1, 2, 3, 4]))    # 1
print(min(1, 2, 3, 4, -5))  # -5
print(min(1, 2, 3, 4, -5, key = abs))     # 1

 五、最重要的内置函数

1.len()

作用:获取容器数据类型的长度

print(len('abc'))   # str
print(len([1, 2, 3, 'a']))  # list
print(len((1, 2, 3, 'a')))  # tuple
print(len({'k1': 'v1', 'k2': 'v2'}))    # dict
print(len({'k1', 'k2'}))    # set

2.zip()

拉链方法

zip(iter),返回值可迭代

li = [1, 2, 3, 'a']
t = (1, 2, 3, 'a')
dic = {'k1': 'v1', 'k2': 'v2'}
se = {'k1', 'k2'}   # dict 和 set 是无须的
a = zip(li, t, dic, se)
for i in a:
    print(i)
"""
结果:
(1, 1, 'k1', 'k1')
(2, 2, 'k2', 'k2')
"""

 

3.filter()

filter(函数名, 可迭代对象),返回值可迭代

filter(),筛选True

# 求1-100的偶数
def func1(x):
    return x % 2 == 0   # 为偶数返回True


ret = filter(func1, list(range(1, 101)))    # ret为可迭代对象
for i in ret:
    print(i)
# 过滤1-100中平凡根为整数的值
from math import sqrt


def _sqrt(x):
    if sqrt(x).is_integer():
        return True


ret = filter(_sqrt, list(range(1, 101)))
for i in ret:
    print(i)
    
"""
结果:
1
4
9
16
25
36
49
64
81
100
"""
# 过滤空字符串
def func1(x):
    return x and str(x).strip()


ret = filter(func1, [' ', [], 'ab', '', 123, {}])
for i in ret:
    print(i)
"""
结果:
ab
123
"""

4.map()

map(函数名,可迭代对象),返回值是可迭代对象

# 求list元素的绝对值,abs()里的参数不能是list
ret = map(abs, [1, -1, 2, -4])
for i in ret:
    print(i)
print(list(ret))    # [],值只能取一次
# 求平方大于10的数
def func1(x):
    if pow(x, 2) > 10:
        return x


ret = map(func1, [1, 2, 3, 4])
for i in ret:
    print(i)
"""
结果:
None
None
None
4
"""

map()和filter()的区别

1).filter()是删选,获取值的数量<=原来的

2).map(),获取值的数量不变

5.sorted()

sorted(iterable, key=函数ming, revese='Flase')

 reverse默认False

# sorted()
li = [1, -1, 4, -3]
li2 = sorted(li, key = abs, reverse=True)
print(li2)

# sort()
li.sort(key = abs, reverse=True)
print(li)

sort()和sorted()的区别

1).sort(),不创建新的内存地址

2)sorted(),创建新的内存地址

 六、数据类型的强制转化

1.str

2.list

3.tuple

4.set

5.frozenset()

把集合变成不可变数据类型

6.dict

七、其它常用方法

1.ord()

把字母->数字,对应Ascii码或unicode

2.chr()

数字->字母,对应Ascii码或unicode

print(ord('A'))     # 65
print(chr(97))      # a

3.any()

any(iterable),任何一个元素为True,返回True

4.all()

all(iterable),所有元素为True,返回True,否则False

print(any(['', [], {}, True]))      # True
print(all([1, 'a', []]))        # False

5.bytes()

bytes(str, encoding),将str->bytes

print(bytes('tom', encoding='utf-8'))   # b'tom'

7.repr()

就是%r

s = 'tom'
print('Hello, %s' % s)
print('Hello, %r' % s)
"""
结果:
Hello, tom
Hello, 'tom'
"""

8.sorted()

sorted(iterable, key, reverse)

li = [1, -1, 4, -3]
ret = sorted(li, key=abs, reverse=True)
print(ret)
# 结果:4,-3,1,-1

9.reversed()

反转,返回值为可迭代

li = [1, -1, 4, -3]
ret = reversed(li)
for i in ret:
    print(i)

七、总结

1.带有key的方法

max(), min(), filter(), map(), sorted()

2.返回值是迭代器

zip(), map(), filter(), reversed()

 注意:sorted() 和reversed()都是创建新的值,重新开辟新的内存空间