面向对象的模块

模块

模块的简介

  • 模块化
    • 模块化:将一个完整的程序分解成一个一个小的模块
    • 模块化的优点:

      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

猜你喜欢

转载自blog.csdn.net/qq_45671732/article/details/108909354