内置函数day14课堂小结

课前回顾

迭代器

迭代器对象一定是可迭代对象,可迭代对象不一定是迭代器对象

可迭代对象

含有__iter__方法的数据类型

除了数字类型都是可迭代对象

迭代器对象

含有__iter__,__next__方法的数据类型

文件才是迭代器对象

可迭代对象加上__iter__会变成迭代器对象

迭代器对象加上__iter__方法依然是迭代器对象

for循环原理

lt = [1,2]

lt_iter = lt._iter_()
while True:
    try:
        print(lt_iter._next_())
    except StopIteration:
        break

三元表达式

条件成立if条件 else条件不成立

列表推导式

[i fo i in range(10)]

字典生成式

{i:i for i in range(10)}

zip

把多个可迭代对象一次性读取每一个可迭代对象的中的元素,拼成元素

生成器表达式

(i for i in range(10)) # 节省内存 空间-》生成器-》老母鸡

[i for i in range(10)]-》列表--》一筐鸡蛋

生成器

本质是迭代器,是自定迭代器,含有yield关键字的函数

def ge():
    yield

yield

  1. 暂停函数
  2. 通过next取出一个yield的值
def range(start,stop,step):
    while start < stop :
        yield start
        start += step
        
        
for i in range(1,10,2):
    print(i)

递归

函数调用本身,有退出条件

count  = 0
def a():
    global count
    print(count)
    
    if count == 100:
        return
    count += 1
    a()
    
a()

匿名函数

有名函数

我们之前定的函数都是有名函数,它是基于函数名使用。

匿名函数

匿名函数,他没有绑定名字,使用一次即被收回,加括号即可运行。

匿名函数的语法:

lambda 参数 :返回值

f = lambda x, y:x * y
res = f(1,2)
print(res)

内置函数

python解释器内置方法:

掌握:
  1. bytes
res = bytes('中国',encoding='utf8')
print(res)
b'\xe4\xbd\xa0\xe5\xa5\xbd'
res = '你好'.encode('utf8')
print(res)
b'\xe4\xbd\xa0\xe5\xa5\xbd'
  1. chr()/ord()

chr()参考ASCII码表将数字转成对应字符;ord()将字符转换成对应的数字。

print(chr(65))
A
print(ord('A'))
65
  1. divmod() 分栏
print(divmod(10,3)) #取整/取余
(3,1)
  1. enumerate() 带有索引的迭代
l = ['a','b','c']
for i in enumerate(l):
    print(i)
(0,'a')
(1,'b')
(2,'c')
  1. eval() 把字符串翻译成数据类型,把字符串去掉,留下来的。
lis = '[1,2,3]'
lis_eval = eval(lis)
print(lis_eval)
[1,2,3]
  1. hash() 是否可哈希 ,可变类型不可 哈希
print(hash(1))
1
了解:
  1. abs() 求绝对值。
print(abs(-13)) # 求绝对值
13
  1. all() 可迭代对象内元素全为真,则返回真。
print(all([1,2,3,4]))
print(all([]))
Ture
False
  1. any() 可迭代对象中有一元素为真,则为真。
print(any([1,2,3,0]))
print(any([]))
True
False
  1. bin()/oct()/hex() 二进制、八进制、十六进制转换。
print(bin(17))
print(oct(17))
print(hex(17))
0b10001
0o21
0x11
  1. dir() 列出模块的所有方法
import time 

print(dir(time))
  1. frozenset() 不可变的集合 (不可变化的集合,类似于元组)
s = frozenset({1,2,3})
frozenset({1,2,3})
  1. globals()/loacals() 查看全局变量/查看当前位置变量
def func():
    s = 's1'
    print(globals())
    print('locals():',locals())

   
func()
locals():{'s':'s1'}
  1. pow()
print(pow(3,2,3)) # (3**2)%3
0
  1. round() 四舍五入
print(round(10.33))
10
  1. slice
lis = ['a','b','c']
s = slice(1,4,1)
print(lis[s])
['b', 'c']
  1. sum()
print(sum(range(100)))
4950
  1. __import__() 通过字符串导入模块
time = __import__('time')
print(time.time())

异常处理

异常处理:报了错,进行处理

异常捕捉只能捕捉逻辑错误,语法错误不行

print(1)
num = input('请输入数字:')

try:
    1/int(num) # 报错之后,不运行下面的代码
except ZeroDivisionError:
    print('傻逼,不能输入0')
    
print(2)
    
except Exception as e: # 万能异常,只要有错误,就捕捉
    print(e) # 错误的描述信息

面向过程编程

面向过程”(Procedure Oriented)是一种以过程为中心的编程思想。“面向过程”也可称之为“面向记录”编程思想,他们不支持丰富的“面向对象”特性(比如继承、多态),并且它们不允许混合持久化状态和域逻辑。

就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。

猜你喜欢

转载自www.cnblogs.com/shin09/p/11586654.html