上方都是实例方法,能访问能运行。
那么类方法究竟是什么样子呢?
只要有个类方法装饰器即可。
总结:实例方法 参数是 self;类方法,参数是cls
类方法可以通过类调用,也可以通过实例调用,实质上没有区别
只是类对象要传递参数来指定哦。
静态方法不需要传递参数,所以self参数自动变暗了。
将大模块哦,不是random这种自带小模块。
模块化:就是将完整功能分解为一个个小模块,通过模块组合来搭建出完整程序
优点:
1.方便开发和维护
2.模块可以复用
模块创建:
在python中,一个py文件就代表一个模块。
#在一个模块中引入其他模块
#1.import模块名(python的文件名)
import test_m
#虽然没有test_m中的指令语句,但是调用过来了,就可以执行运行。可以引入同一个模块多次,但是只执行重复的一次,即调用一次。
#2.import 模块名 as 模块别名
import test_m as test
# print(test_m) 这个是报错的哦,因为改名了。
print(test)
#在每一个模块内部都有一个双下划name (__name__),通过它可以获得当前引入模块的名字,但是运行__name__却出现结果为 __main__,说明当前是主文件。
print(__name__) #运行结果是 __main__
模块的使用
1.在模块中引入变量
2.在模块中定义函数
对应上requests 就可以举一反三了吧
3.在模块中定义类:
##我们也可以引入模块中的部分内容
语法: from 模块名 import 变量
下图解决引入很多很多,可以直接把所有要引入的变量都写出来。
4. 语法 :from 模块名 import 变量 as 别名
旧的列表–>新的列表
语法:
原来的方式:用定义函数,传递列表,优点,条理清晰,且动能强。
而用列表推导式 则如下:(特点:条件简单可以用)
and 条件照样用上
在python中有一边循环一边计算的机制,称之为 “生成器”
当我们创建了很多元素,但是只需要几个,这时候就用生成器取我们要的几个,节省性能。
如何创建生成器
#1. 通过列表推导式
@需求:得到一个0-10之内 分别和3相乘的结果的列表
new_lst=[x*3 for x in range(10)]
print(new_lst)
我们用列表推导式方式,将外层[]去掉换成了(),就变成了生成器
方式一、用__next__()获得元素,每次获得一个,可以多次调用,出多个元素
g=(x*3 for x in range(10))
print(type(g)) # 是一个generator对象
print(g.__next__())
print(g.__next__())
定义生成器方式二、通过函数完成
1.定义一个函数,函数中使用yield关键字
2. 调用函数,接受调用结果。
3. 得到的结果就是个生成器
4. 通过next()函数__next__()
下图死循环程序
只要在函数中添加了yield关键字,说明这个函数变成了生成器函数了。
运行下图无反应!
更改一下,运行结果如下: