常见内置函数
内置函数:提前定义好的 直接使用即可
1.abs() 求绝对值
print(abs(-100))
2.all()与any() 判断容器类型中的所有数据值对应的布尔值是否为True
all() 所有的数据值都为True的情况下 结果才为True
print(all([1,2,3,4,5,0]))
print(all([1,2,3,4,5]))
any() 所有的数据值只有一个为True 结果就是True
print(any([1,2,3,4,5,0]))
print(any([1,2,3,4,5]))
3.bin() oct() hex() 十进制转其他进制
print(bin(10))
print(oct(10))
print(hex(10))
4.int() 类型转换 其他进制转十进制
print(int(0b1010))
print(int(0o12))
print(int(0xa))
5.bytes() 类型转换
res = '帅帅的大男孩 完美的身材'.encode('utf8')
print(res)
res1 = res.decode('utf8')
print(res1)
res = bytes('帅帅的大男孩 完美的身材','utf8')
print(res)
res1 = str(res,'utf8')
print(res1)
6.callable()
判断某个变量是否可以加括号调用
name = 'curry'
def index():
print('from index')
print(callable(name))
print(callable(index))
7.chr() ord() 依据ASCII码
print(chr(65))
print(chr(97))
print(ord('A'))
print(ord('a'))
8.dir()
print(dir(str))
9.divmod()
real_num, more = divmod(199,10)
if more:
real_num += 1
print('总数:%s' % real_num)
10.enumerate()
name_list = ['curry','jason','oscar','jerry']
for i,j in enumerate(name_list,100):
print(i,j)
11.eval() exec()
res = 'print(123)'
eval(res)
exec(res)
res1 = "for i in range(10):print(i)"
eval(res1)
exec(res1)
12.hash()
print(hash('curry'))
print(hash('123'))
13.help()
help()
14.isinstance()
print(isinstance(123,int))
print(isinstance(123,str))
15.pow()
print(pow(2,3))
16.round()
print(round(98.3))
print(round(98.9))
可迭代对象
1.迭代如何理解?
迭代就是更新换代 每次迭代都需要基于上一次的成果
eg:手机上面的软件更新其实专业名词>>>:软件版本迭代
2.代码演示
while True:
print('好好学习')
n = 0
while n < 10:
print(n)
n += 1
3.如何判断可迭代对象?
'''
内置有__iter__方法的都叫做可迭代对象
1.内置是什么意思 通过句点符直接能够点出来的东西都叫内置
2.__XXX__ 针对下划线开头双下划线结尾的方法 统一叫:双下XXX
'''
int
float
str
list
dict
tuple
set
bool
def index();
print
f = open(r'01 考题讲解.py','r',encoding='utf8')
"""
可迭代对象
字符串 列表 字典 元组 集合 文件对象(本身就是迭代器对象)
不是可迭代对象
整型 浮点型 布尔值 函数名
可迭代对象能够支持for循环取值
"""
迭代器对象
"""
作用:
迭代器对象给我们提供了一种不依赖于索引取值的方式
正是因为有迭代器对象的存在 我们才能对字典、集合这些无序类型循环取值
"""
1.如何判断迭代器对象
内置有__iter__和__next__的对象都成为迭代器对象
2.可迭代器对象与迭代器对象的关系
可迭代对象调用__iter__方法之后就会变成迭代器对象
迭代器对象调用__iter__方法无论多少次还是迭代器对象本身
3.迭代器对象迭代取值
res = 'curry'.__iter__()
print(res.__next__())
print(res.__next__())
print(res.__next__())
print(res.__next__())
print(res.__next__())
print(res.__next__())
d1 = {'name':'curry','pwd':123}
res = d1.__iter__()
print(res.__next__())
print(res.__next__())
l1 = [11,22,33,44,55,66,77,88]
res = l1.__iter__()
count = 0
while count < len(l1):
print(res.__next__())
count += 1
4.补充说明
4.1 迭代器反复使用
l = [11,22,33,44]
print(l.__iter__().__next__())
print(l.__iter__().__next__())
print(l.__iter__().__next__())
res = l.__iter__()
print(res.__iter__().__next__())
print(res.__iter__().__next__())
print(res.__iter__().__next__())
print(res.__iter__().__next__())
4.2 针对双下方法
res = l.__iter__()
res.__next__()
4.3 迭代器对象特殊的地方
可迭代对象 迭代器对象 通过打印操作无法直接看出内部数据的情况
但是可以节省内存:类似于一个工厂 想要数据会临时造一个
fotr循环的本质
for循环语法结构
for 变量名 in 可迭代对象:
for循环体代码
1.for会自动将in后面的数据调用__iter__()变成迭代器对象
2.之后每次循环调用__next__()取值
3.最后没有值__next__()会报错 for能够自动处理该错误 让循环正常结束
练习题
user_data = {
'1': {'name': 'jason', 'pwd': '123', 'access': ['1', '2', '3']},
'2': {'name': 'kevin', 'pwd': '321', 'access': ['1', '2']},
'3': {'name': 'oscar', 'pwd': '222', 'access': ['1']}
}
is_login = {
'is_login': False,
'access_list': []
}
def auth_user(func_id):
def outer(func_name):
def inner(*args,**kwargs):
if is_login.get('is_login'):
acess = is_login.get('access_list')
if func_id in acess:
res = func_name(*args,**kwargs)
return res
else:
print('您没有当前功能编号:%s 的函数执行权限' % func_id)
else:
user_id = input('请输入您的身份编号>>>:').strip()
if user_id in user_data:
username = input('username>>>:').strip()
password = input('password>>>:').strip()
real_dict = user_data.get(user_id)
if username == real_dict.get('name') and password == real_dict.get('pwd'):
access = real_dict.get('access')
is_login['is_login'] = True
is_login['access_list'] = access
if func_id in access:
res = func_name(*args,**kwargs)
return res
else:
print('你没有当前功能编号为:%s 的函数执行权限')
return inner
return outer
@auth_user('1')
def func1():
print('from func1')
@auth_user('2')
def func2():
print('from func2')
@auth_user('3')
def func3():
print('from func3')
func1()
func2()
func3()
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)