目录
1.模块化
- 模块化其实就是将一个的功能分解为一个一个的小模块
- 模块化的优点
- 1.方便开发以及维护
- 2.模块可以复用
- 在Python中一个py文件就是一个模块
- 在一个模块中引入外部模块
1.import 模块名(模块名就是Python的文件名)
import test_m
print(test_m) 这是我的第一个模块
<module 'test_m' from 'D:\\py_Project\\基础\\test_m.py'>
一个模块的名字指向的路径
- 可以引入同一个模块多次,但是模块实例只会建一次
import test_m
test_m
test_m
test_m
输出:这是我的第一个模块
2.import 模块名 as 模块别名
import test_m as test
print(test)
这是我的第一个模块
<module 'test_m' from 'D:\\py_Project\\基础\\test_m.py'>
3.__name__
- 在每一模块内部都有__name__ 我们可以获取模块的名字
模块文件:
print(__name__)
文件1
import test_m
输出:test_m
如果这个模块直接运行,那么__name__默认的字符串为 __main__ 表示当前文件为主文件
print(__name__)
输出:__main__
2.模块的使用
- 访问模块中的变量 语法:
模块名.变量名
模块文件:
在模块中定义变量
a = 1
b = 2
文件1:
import test_m
print(test_m.a,test_m.b)
输出:1 2
- 访问模块中的函数 语法:
模块名.函数名
模块文件:
在模块中定义函数
def test1():
print('test1')
def test2():
print('test2')
文件1:
import test_m
test_m.test1() 输出:test1
test_m.test2() 输出:test2
- 访问模块中的对项名 语法:
模块名.对象名
模块文件:
在模块中定义类
class Person():
def __init__(self):
self.name = '啦啦啦'
文件1:
import test_m
p = test_m.Person()
print(p.name) 输出:啦啦啦
3.模块的引入
- 我们也可以引入模块中的部分内容
- 语法 :
from 模块名 import 变量
模块文件
#在模块中定义变量
a = 1
b = 2
#在模块中定义函数
def test1():
print('test1')
def test2():
print('test2')
# 在模块中定义类
class Person():
def __init__(self):
self.name = '啦啦啦'
文件1:
from test_m import Person
p = Person()
print(p.name) 输出:啦啦啦
print(test_m.a) 输出:报错:NameError: name 'test_m' is not defined
- 语法:
from 模块名 import 变量,变量,变量........
模块文件:
#在模块中定义变量
a = 1
b = 2
#在模块中定义函数
def test1():
print('test1')
def test2():
print('test2')
# 在模块中定义类
class Person():
def __init__(self):
self.name = '啦啦啦'
文件1:
from test_m import Person,test1,test2,a
test1() #test1
test2() #test2
p = Person()
print(p.name) #啦啦啦
print(a) #1
print(b) # NameError: name 'b' is not defined
- 语法:
from 模块名 import 变量 as 别名 - 出现了两个名字一样的函数,用此方法,区别他们
模块文件:
#在模块中定义变量
a = 1
b = 2
#在模块中定义函数
def test1():
print('test1')
def test2():
print('test2')
# 在模块中定义类
class Person():
def __init__(self):
self.name = '啦啦啦'
文件1:
def test1():
print('我是主模块中的test1')
from test_m import test1 as new_test1
test1() #我是主模块中的test1
new_test1() #test1
4.列表推导式
- 旧的列表 ----> 新的列表
- 语法1 [表达式 for 变量 in 旧列表] 2 [表达式 for 变量 in 旧列表 if 条件]
lst = [i for i in range(0,101) if i % 3 == 0 and i % 6 == 0]
print(lst) #[0, 6, 12, 18, 24, 30, 36, 42, 48, 54, 60, 66, 72, 78, 84, 90, 96]
5.生成器
- 在Python中有一边循环一边计算的机制,称之为生成器
- 如何创建生成器
-
通过列表推导式
- 1.通过__next__() 的特殊方法 获得元素
- 他会需要一个生产一个,不会占用过多的内存
# 0 - 10之内 分别和3相乘的结果
lst = [ i * 3 for i in range(0,10)]
print(lst) # [0, 3, 6, 9, 12, 15, 18, 21, 24, 27]
g = (i * 3 for i in range(0,10))
print(type(g)) # <class 'generator'> 生成器
print(g) # <generator object <genexpr> at 0x000001E285B0E750>
print(g.__next__()) # 0
print(g.__next__()) # 3
- 2.next()
# 0 - 10之内 分别和3相乘的结果
lst = [ i * 3 for i in range(0,10)]
print(lst) # [0, 3, 6, 9, 12, 15, 18, 21, 24, 27]
g = (i * 3 for i in range(0,10))
print(type(g)) # <class 'generator'>
print(g) # <generator object <genexpr> at 0x000001E285B0E750>
print(g.__next__()) # 0
print(g.__next__()) # 3
print(next(g)) # 6
print(next(g)) # 9
-
通过函数来完成
- 只要在函数中添加了yield关键字,就变成了一个生成器函数
- 1.定义一个函数,函数中使用yield关键字
- 2.调用函数,接收调用结果
- 3.得到的结果就是一个生成器
- 4.通过next()函数__next__ 取值
def fn():
n = 0
while True:
n += 1
yield n # return n + 暂停
n = fn()
print(n)
print(next(n)) # 1
print(next(n)) # 2