python学习Day20


Day 20

今日内容概要

  • 常见内置函数
  • 可迭代对象
  • 迭代器对象
  • for循环内部原理
  • 异常捕获
  • 生成器对象

今日内容详细

1.常见内置函数
内置函数:提前定义好可以直接使用的函数
1.abs() #求绝对值
	print(abs(-99))#99
2.all()与any() #判断容器类型中所有数据值对应的布尔值是否为True
  2.1.all()只有所有数据值都是True结果才会True
	print(all([1,2,3]))#True
	print(all([1,2,3,0]))#False
  2.2any()只要有一个数据值为True结果才是True
	print(any([1,2,3]))#True
	print(any([0,0,0]))#False
3.bin() oct() hex() #十进制转其他进制
	print(bin(10))#0b1010 十>>二
	print(oct(10))#0o12   十>>八
	print(hex(10))#0xa    十>>十六
4.int()#类型转换 其他进制转十进制
	print(int(0b1010))
	print(int(0o12))
	print(int(0xa))
5.bytes()#类型转换类似于编码(encode)解码(decode)
	编码:
	res=bytes('张三','utf8')
	print(res)#b'/xe5/xbc/xa0/xe4/xb8/x89'
	解码:
	res1=str(res,'utf8')
	print(res1)#张三
6.callable()#判断某个变量是否可以加括号调用
'call在IT中翻译为调用  调用就是加个()'
	name='jason'
	def index():
        print('from index')
	print(callable(name))#False 该变量名不能加括号调用
	print(callable(index))#True 该变量名可以加括号调用
7.chr() ord() #依据ASCII码表实现字符与数字的转换
	print(chr(65))#A
	print(ord('A'))#65
8.dir()#获取对象内部可以通过句点符获取的数据
	print(dir(str))
9.divmod()#获取除完之后的整数与小数部分
	eg:一个网页我有898个数据,每页展示10个,需要展示多少页
    num,more=divmod(898,10)
    if more:#如果整除不了说明有余数 
        num+=1#则让num自增1
    print('总页数:%s'%num)#总页数:900
    
*重点*    
10.enumerate()#枚举
eg:要求循环打印处数据值 并有相应的索引值
    list=['jason','kevin','cat']
    for i,j in enumerate(list,1):#把i后面循环出来的数据一个一个交给变量j。从1开始(默认不写就是从0开始)
        print(i,j)#1 jason   2 kevin   3 cat
        
11.eval() exec()#能够识别字符串中python代码并执行
   eg:
    res='print(123)'
    print(res)#print(123)
    eval(res)#123 相当于把引号拿掉
    'eval和exec用法相同 区别就是第一个只能识别简单结构,后面的可以识别复杂结构'
12.hash()#返回一串随机的数字(哈希值)#需字符串型式
	print(hash('张三'))
	print(hash('123'))
13.help()#查看帮助信息
	help(len)#会返回len的注释、介绍、使用方式。(帮助手册)

*重点*
14.isinstance()#判断某个数据是否属于某个数据类型
    print(isinstance(123,int))#True
    print(isinstance(123,str))#False

15.pow()#幂指数
	print(pow(2,3))#8 求2的8次方
16.round()#四舍五入(不太准)
	print(round(98.3))#98
2.可迭代对象
1.什么是迭代?
	迭代就是更新换代,每次迭代都需要基于上一次
    eg:软件版本更新
2.代码演示
	不属于迭代:
    while True:
        print('嘿嘿嘿')

    属于迭代:#因为每次打印n都是基于上一次的n+1得来的结果
    n = 0
    while n < 10:
        print(n)
        n += 1
3.如何判断可迭代对象
	'''
	内置有__iter__方法的都叫可迭代对象
	1.什么是内置? 通过句点符能直接点出来的东西就叫内置
	2.__xxx__ 针对双下划线开头双下划线结尾的方式统一读作双下xxx
	''' 
    
    # int    # 整型不是可迭代对象
    # float  # 浮点型不是可迭代对象
    # bool   # 布尔值不是可迭代对象
    # 函数名  # 函数名不是可迭代对象
    
    # str    # 字符串是可迭代对象
    # list   # 列表是可迭代对象
    # dict   # 字典是可迭代对象
    # tuple  # 元组是可迭代对象
    # set    # 集合是可迭代对象
    # f      #文件对象是可迭代对象
    可迭代对象:
    	字符串、列表、字典、元组、集合、文件对象(本身就是可迭代对象)
    不是迭代对象:
    	整型、浮点型、布尔值、函数名
    '可迭代对象能支持for循环取值'
3.迭代器对象
'''
作用:
	迭代器对象给我们提供了一种不依赖于索引取值的方式,有了迭代器对象我们才能对字典、集合这些无序类型循环取值
'''
1.如何判断迭代器对象:
	内置有__iter__和__next__的对象都称之为迭代器对象
2.可迭代对象与迭代器对象的关系:
	可迭代对象调用__iter__方法后就会变成迭代器对象
	迭代器对象调用__iter__方法无论多少次还是迭代器对象本身
3.迭代器对象迭代取值:
	 res = 'cat'.__iter__()  # res已经是迭代器对象
     print(res.__next__())  # c
     print(res.__next__())  # a
     print(res.__next__())  # t
     print(res.__next__())  # 没有了直接报错
    
	dict={'name':'张三','pwd':123}.__iter__()
	print(dict.__next__())#name
	print(dict.__next__())#pwd
	print(dict.__next__())#没有了报错
    
 eg:不使用for循环 依次打印出列表所有值
    l1=[1,2,3,4,5]
    #1.将列表变成迭代器对象
    res=l1.__iter__()
    #2.定义一个计数器
    count=0
    #3.编写while循环
    while count<len(l1):
        #4.循环取值
        print(res.__next__())
        count+=1
4.补充说明
	4.1.迭代器的反复使用
		l1=[1,2,3]
         print(l1.__iter__().__next__())#1
         print(l1.__iter__().__next__())#1
         print(l1.__iter__().__next__())#1
        #每次使用都是产生了新的迭代器对象
        
         l2=[1,2,3]
         res=l2.__iter__()
         print(res.__iter__().__next__())#1
         print(res.__next__())#2
         print(res.__next__())#3
    	#每次使用都是用一个迭代器对象
        
    4.2.针对双下方法#不建议 没有标识度
        l=[1,2,3]
        res=l.__iter__()  可以简写为  iter(l)
        res.__next__()    可以简写为  next(res)
        
    4.3.迭代器对象特殊的地方
        print(range(4))#range(0,4) (python2是直接全打印出来)
        res=range(4).__iter__()#range是一个可迭代对象 只有赋值接收后才可以变成迭代器对象
        print(res.__next__())#0
        print(res.__next__())#1
        print(res.__next__())#2
        print(res.__next__())#3
     可迭代对象、迭代器对象 通过打印操作无法直接看出内部数据的情况,这是在帮助我们节省内存,相当于工厂,要一个数据就给我们造一个出来
4.for循环内部原理
语法结构
	for 变量名 in 可迭代对象:
        for循环体代码
   1.for会自动将in后面的数据调用__iter__()变成可迭代器对象
   2.之后每次循环调用__next__()取值
   3.最后没有值时__next__()会报错,for能自动处理错误让循环正常结束

原创文章,作者:506227337,如若转载,请注明出处:https://blog.ytso.com/273689.html

(0)
上一篇 2022年7月11日
下一篇 2022年7月11日

相关推荐

发表回复

登录后才能评论