模块
模块的简介
- 模块化
- 模块化:将一个完整的程序分解成一个一个小的模块
- 模块化的优点:
1.方便开发并且方便维护
2.模块可以进行复用
- 在python中一个py文件就是一个模块,
在一个模块中引入外部模块
可以引入同一个模块多次,但是模块只会执行一次
模块的引入的写法
- 第一种:import 模块名(模块名就是python的文件名)
text
print('这是我的第一个模块')
测试文件
import text
print(text)# <一个模块的名字和指向的路径>
- 第二种:import 模块名 as 模块别名
text
print(__name__)
测试
import text as text_m
print(text_m)# <一个模块的名字和指向的路径>
# __name__:在每一个模块内部都有这个__name__我们可以通过这个获取模块的名字
# 如果这个模块直接运行,那么这个__name__默认的字符串__main__
- 第三种:from 模块名 import 变量,变量,变量…
测试:
from text import Person,text1,text2
#print(text)
p1 = Person()
print(p1)
text1()
text2()
模块
a = 1
b = 2
# 在模块中定义函数
def text1():
print('text1')
def text2():
print('text2')
# 在模块中定义类
class Person:
def __init__(self):
self.name = '葫芦娃'
p = Person()
print(p.name)
- 第四种:from 模块名 import *
测试
from text import *
text1()
text2()
模块
# 在模块中定义变量
a = 1
b = 2
# 在模块中定义函数
def text1():
print('text1')
def text2():
print('text2')
# 在模块中定义类
class Person:
def __init__(self):
self.name = '葫芦娃'
p = Person()
print(p.name)
测试结果
葫芦娃
text1
text2
- 第五种:from 模块名 import 变量 as 别名
def text1():
print('主模块中的text1')
from text import text1 as new_text1
text1()
new_text1()
# 在模块中定义变量
a = 1
b = 2
# 在模块中定义函数
def text1():
print('text1')
def text2():
print('text2')
# 在模块中定义类
class Person:
def __init__(self):
self.name = '葫芦娃'
p = Person()
print(p.name)
葫芦娃
主模块中的text1
text1
模块的使用
测试
# 访问模块中的变量的语法:
# 模块名.变量
import text
print(text.a,text.b)
# 访问模块中的函数的语法:
# 模块名.函数
text.text1()
text.text2()
# 访问模块中的类
# 语法:模块名.对象名
p = text.Person()
print(p.name)
模块
# 在模块中定义变量
a = 1
b = 2
# 在模块中定义函数
def text1():
print('text1')
def text2():
print('text2')
# 在模块中定义类
class Person:
def __init__(self):
self.name = '葫芦娃'
p = Person()
print(p.name)
测试结果
葫芦娃
1 2
text1
text2
葫芦娃
# 在模块中定义变量
a = 1
b = 2
c = 3# c是私有的,不希望去修改
# 在模块中定义函数
def text1():
print('text1')
def text2():
print('text2')
# 在模块中定义类
class Person:
def __init__(self):
self.name = '葫芦娃'
p = Person()
# 如果这个文件是主文件则执行下列代码
if __name__ == '__main__':
# 以下是测试代码
print(p.name)
text1()
text2()
葫芦娃
text1
text2
迭代器和生成器
迭代器
访问元素的一种方式,可以记住遍历位置的对象,迭代器也是从序列中第一个元素访问直到所有的元素被访问完结束
lst = [1,2,3,4,5,6,7]
myiter = iter(lst)
print(next(myiter))
print(next(myiter))
print(next(myiter))
print(next(myiter))
print(next(myiter))
print(next(myiter))
print(next(myiter))
1
2
3
4
5
6
7
lst = [1,2,3,4,5,6,7]
myiter = iter(lst)
for i in myiter:
# 迭代数据结构
print(i)
1
2
3
4
5
6
7
生成器
在python中使用yield这个关键字我们就称为生成器函数或者生成器
- 生成器和普通函数的区别
返回的是一个迭代器的函数,只用于迭代作用
def fn():
print(1)
yield 11
print('2')
yield 29
print('kjkjk')
yield 90
yield 78
print(type(fn))
f = fn()
print(type(f))
next(f)
print('返回:',next(f))
print('返回:',next(f))
print('返回:',next(f))
<class 'function'>
<class 'generator'>
1
2
返回: 29
kjkjk
返回: 90
返回: 78