第八章 内置函数

1.作用域相关 locals、globals                                                                     

def func():
    a = 1
    b = 2
    print(locals())
    print(globals())
# 全局命名空间中的名字
print(locals())   # 本地的命名空间
print(globals())  # 全局的命名空间
func()

 2.输入输出相关input、print                                                                       

# input
inp = input('>>>')
# 出现术语:阻塞

# print
# 99乘法表
for i in range(1, 10):
    for j in range(1, i+1):
        print('%s * %s == %s'% (i, j, i*j), end=' ')
    print()
# 1 * 1 == 1
# 2 * 1 == 2 2 * 2 == 4
# 3 * 1 == 3 3 * 2 == 6 3 * 3 == 9
# 4 * 1 == 4 4 * 2 == 8 4 * 3 == 12 4 * 4 == 16
# 5 * 1 == 5 5 * 2 == 10 5 * 3 == 15 5 * 4 == 20 5 * 5 == 25
# 6 * 1 == 6 6 * 2 == 12 6 * 3 == 18 6 * 4 == 24 6 * 5 == 30 6 * 6 == 36
# 7 * 1 == 7 7 * 2 == 14 7 * 3 == 21 7 * 4 == 28 7 * 5 == 35 7 * 6 == 42 7 * 7 == 49
# 8 * 1 == 8 8 * 2 == 16 8 * 3 == 24 8 * 4 == 32 8 * 5 == 40 8 * 6 == 48 8 * 7 == 56 8 * 8 == 64
# 9 * 1 == 9 9 * 2 == 18 9 * 3 == 27 9 * 4 == 36 9 * 5 == 45 9 * 6 == 54 9 * 7 == 63 9 * 8 == 72 9 * 9 == 81

# 结束不换行 print(1,2,3,4,5,sep=';',end=' ') print(1,2,3,4,5,sep=';',end='') # 1;2;3;4;5 1;2;3;4;5 # 滚动条例子 import time for i in range(0,101,2): time.sleep(0.1) char_num = i//2 #打印多少个'*' if i == 100: per_str = ' %s%% : %s ' % (i, '*' * char_num) else: per_str = ' %s%% : %s' % (i, '*' * char_num) print(per_str,end='', flush=True) # print(per_str, flush=True) #小越越 : 可以把光标移动到行首但不换行 相当于文件中的seek(0),只能 # 对越写越长的操作 # print() 写文件 # python 能直接操作文件 ------ 需要发起系统调用才能操作文件 # flush 立即写 # seq 分隔符 # end 结束分隔符

3.内存相关hash、id                                                                                    

print(hash('12341723894'))
# 1550914739143308370
# 对可hash的数据类型进行hash之后会得到一个数字
# 在一次程序的执行过程中,对相同的可哈希变量,哈希之后的结果永远相同的
# 在一次程序的执行过程中,对不相同的可哈希变量,哈希之后的结果几乎总是不相同的
# hash 字典底层的存储 和 set 集合的去重机制都相关

# id() 查询内存地址
print(id(1))
# 1773891040

4.杂项                                                                                                          

# 1- 引用模块
# import
# 2- 帮助 # help
#
3- 判断函数是否可调用 # callable def func():pass a = 1 print(callable(func)) # True print(callable(a)) # False
#
4- 查看内置属性 # dir() print(dir('1')) #查看一个变量所用于的所有名
#
5- 文件操作 # open

5.基础数据类型相关                                                                                     

1.数字相关

数据类型
int 整型 bool bool类型 float 浮点型 complex 复数
# 进制转换
print(bin(10)) # 0b1010
print(oct(10)) # 0o12
print(hex(10)) # 0xa #0123456789abcdef
# 数学运算
# abs() # 绝对值
# divmod # 商余函数
print(divmod(10, 2))
print(divmod(7, 3))
print(divmod(9, 7))
# 返回一个数组,分页的时候会用到
# (5, 0)
# (2, 1)
# (1, 2)

# round() # 默认取整,小数精确,会四舍五入
print(round(3.14151926, 2))
# 3.14

# pow()# 平方
print(pow(2,3))
print(pow(3,2))
# 8
# 9
# print(pow(2, 3, 5)) #(2**3)%5 先平方,在取余

# sum求和
# print(sum(1,2,3))
#     print(sum(1,2,3))
# TypeError: sum expected at most 2 arguments, got 3
# sum(iterable)
# print(sum([1,2,3,4,5]))
# print(sum([1,2,3,4,5]), start=0)
# print(sum([1,2,3,4,5]), start=20)
# print(sum(range(6))) # 省内存

# min最小值
print(min([1,2,3]))
# 1
print(min(1,2,3,4))
# 1
print(min(1,-2,3,-4,key=abs))
# 1 
# 先计算绝对值,在取最小绝对值的原数值

# **************面试的时候最容易出最小值的时候
# 当出现两个最小值的时候,打印头一个
# def func(num):
#     return num%2
# print(min(-2,3,-4,key=func))

# max最大值
print(max([1,2,3]))
# 3

2.数据结构相关

# 创建列表元组
# list
# tuple
# 反序、切片
# reverse
# list.reverse() # 在原列表中改
# reversed(object) # 不改变原对象,可倒序元组等,返回一个迭代器
ret = [1, 2, 3, 4, 5]
# ret.reverse() # 列表的一个方法
# print(ret)

ret1 = reversed(ret)
ret2 = reversed((1,2,3,4,5))
print(ret)
# [1, 2, 3, 4, 5]
print(ret1)
# <list_reverseiterator object at 0x0000026B700C0B00>
print(ret2)
# <reversed object at 0x0000026B700C0B38>

# slice切片,用得不多
# 字符串相关
# str 转化成字符串
# format 格式化输出
# ord返回ascii码
# print(ord('a')) # 小写的a-z 97+26 A-Z 65+26
# chr ascii码对应的值
# print(chr(97))

# repr 让一个对象原形毕露
print(1)
print('1')
print(repr(1))
print(repr('1'))
# 1
# 1
# 1
# '1'
# 数据集合
# dict 字典
# set 集合
# frozenset 不可变集合
# 相关操作
# 1- enumerate() #枚举函数,接收两个参数,一个容器类型,一个序号起始值
l = [1, 2, 3, 4, 5, 6]
ret = enumerate(l)
print(ret)
# <enumerate object at 0x00000227537F0360>
for item in ret:
    print(item)
# (0, 1)
# (1, 2)
# (2, 3)
# (3, 4)
# (4, 5)
# (5, 6)
ret = enumerate(l,1)
print(ret)
# <enumerate object at 0x000001F9DD0B03A8>
lst = ['apple', 'pear']
for num,product in enumerate(lst, 1):
    print(num, product)
# 1 apple
# 2 pear

# 2- all 全部为真则True
print(all([1,2,3,4,5]))
print(all([0,1,2,3,4,5]))
print(all(['a',1,2,3,4,5]))
print(all(['',1,2,3,4,5]))
# True
# False
# True
# False

# 3- any 有一个为真则为True
print(any([1,2,3,4,5]))
print(any([]))
print(any(''))
# True
# False
# False

# 4- {i:j} for i,j in zip(t1,t2) 拉链方法,返回可迭代的对象,以最短的方式打印
ret = zip([1,2,3,4],('a', 'b', 'c', 'd'))
print(ret)
# <zip object at 0x00000146D7317848>
for i in ret:
    print(i)
# (1, 'a')
# (2, 'b')
# (3, 'c')
# (4, 'd')
ret = zip([1,2,3,4],('a', 'b', 'c', 'd'),(4,5,6,7))
for i in ret:
    print(i)
# (1, 'a', 4)
# (2, 'b', 5)
# (3, 'c', 6)
# (4, 'd', 7)

# filter() map()
# 5- filter把可迭代的对象的每一个值,给func,根据func的返回值,留取结果
lst = [1,4 ,6, 7, 9 ]
def func(num):
    if num % 2 == 0:return True
filter(func, lst)
# for i in filter(func, lst):
#     print(i)
# 4
# 6
g = (i for i in lst if i%2==0)

l = ['test', None, '', 'str', '  ', 'END']
# 利用filter()打印非空
def func(obj):
    if obj and obj.strip(): return True
for i in filter(func,l):
    print(i)
# test
# str
# END

# 6- map()
# [i**2 for i in range(10)]
def func(num):
    return num**2
for i in map(func,range(10)):
    print(i)
# 0
# 1
# 4
# 9
# 16
# 25
# 36
# 49
# 64
# 81

# 7- sorted:列表的sorted改变原列表,sorted()函数不改变原对象
l = [1,4,2,3,5,6,5]
l.sort()
print(l)
# [1, 2, 3, 4, 5, 5, 6]

l = [1,4,-2,3,-5,6,5]
l.sort(key=abs)
print(l)
# [1, -2, 3, 4, -5, 5, 6]

l = [1,4,-2,3,-5,6,5]
new_1 = sorted(l, key=abs)
print(new_1)
# [1, -2, 3, 4, -5, 5, 6]
new_1 = sorted(l, key=abs, reverse=True)
print(new_1)
# [6, -5, 5, 4, 3, -2, 1]

l = [[1,2],[3,4,5,6],(7,),'123']
print(sorted(l,key=len))
# [(7,), [1, 2], '123', [3, 4, 5, 6]]

# 8- len计算长度
print(len([1, 2, 3, 4, 5, 6]))

6.执行字符串eval、exec                                                                              

# eval() # 执行可执行的字符串
# eval() 以字符串的形式执行代码,返回执行结果
# exec() 以字符串的形式执行代码,没有返回值
eval('print(1234)')
exec('print(1234)')
# 1234
# 1234

# eval()
print(eval('1+2'))
# 3
print(exec('1+2'))
# None
一鼓作气,再而衰,三而竭。
原文地址:https://www.cnblogs.com/gongniue/p/8993944.html