python教程24-自定义模块的使用、__name__的使用、包的概念、面向对象的介绍、面向对象的基本语法

python教程_小白入门2020/11/02

学习目标
在这里插入图片描述

P146 自定义模块的使用

main.py文件

# 使用自定义模块
# @author : zhangjiongjiong
# 自己定义一个模块,其实就是自己写一个py文件
# 自定义模块语法有 要求,并不是随随便便 就能导入自己写的模块的
# 如果一个py文件想要当作一个模块被导入,文件名一定遵守一定的命名规范
# 有字母,数字,下划线组成
# 导入了一个模块,就能使用模块里所有的变量和函数

import my_module        # 导入整个的模块
print(my_module.a)      # hello
print(my_module.add(3, 4))  # 7



# from <模块名> import *
# import * 是读不到下划线开始的变量和函数的
# 本质是读取模块里的 __all__属性,看这个属性里定义了哪些变量和函数
# __all__属性是一个列表,__all__属性有没有都可以
from my_module import *     # 导入模块里的所有方法,但是模块里其他的东西,比如定义的变量等并没导入
# 如果模块里没有定义__all__,才会导入所有不以 _ 开头的变量和函数
# 有__all__属性的,只读模块里__all__有的方法和变量,没有 __all__的,才会读所有的变量和函数

from my_module import *
# 若要强制使用 _age 变量,可以使用下边的方法
# 强烈不建议 使用 下划线开始的函数 和变量
import my_module

print(my_module._age)       # 19

my_module.py文件

# -*- coding: utf-8 -*-
# @Time    : 20-11-2 9:03
# @Author  : zhangjiulong
# @FileName: my_module.py
# @Software: PyCharm

a = 'hello'


def test():
    print("我是my_module模块里的test函数")


def add(x, y):
    return x + y

# ---------------------------------------------
__all__ = ['m', 'text']
m = 'yew'
n = 100


def text():
    print("我是my_module模块中的text方法")


def foo():
    print("我是demo模块里的foo方法")
# --------------------------------------------
# 没有设置__all__会读取除了以_开始的所有变量和函数
x = 'hello'     # 读不到
y = 1000        # 读不到
_age = 19       # 读不到
# 以下划线开始的变量,建议建议建议  只 在本模块内使用,别的模块不要导入
P147 _name_的使用

main.py文件

# __name__的使用
# @ author: zhangjiong
# from demo import *
# 测视diversion函数,结果是: 2.0
# 需要注意的是,是用import *的方法,会把 demo里所有的代码执行一遍

# import demo
# 测视diversion函数,结果是: 2.0
# 用import 模块名  的方法,也会把 demo里所有的代码执行一遍

import  demo

print(demo)
# 直接运行本文件
# demo里的name是: demo
# 测视diversion函数,结果是: 2.0

demo.py文件

# -*- coding: utf-8 -*-
# @Time    : 20-11-2 9:46
# @Author  : zhangjiulong
# @FileName: demo.py
# @Software: PyCharm

def diversion(a, b):
    return a / b

# __name__:当直接运行这个py文件时,值是main
# 当这个py文件被作为模块导入的时候,值是文件名
print('demo里的name是:', __name__)
print("测视diversion函数,结果是:", diversion(8, 4))
# 直接运行demo文件
# demo里的name是: __main__
# 测视diversion函数,结果是: 2.0

# 想要测视模块里的某个方法是否正确
if __name__ =='__main__':
    print('demo里的name是:', __name__)
    print("测视diversion函数,结果是:", diversion(8, 4))
# 这样用的话  执行本文件时 会输出
# demo里的name是: __main__
# 测视diversion函数,结果是: 2.0
# 但是当别处调用这个模块的时候 就不会执行两个print了
P148 包的概念

在这里插入图片描述
main.py文件

# 包的使用
# @ author: zhangjiong
# 可以将多个具有相似或者有关联的多个模块放到一个文件夹里,便于统一管理
# 这个文件夹,就可以称之为包
# python里可以右键创建文件夹或者python包
# 文件夹和python包的区别就是  创建python包,包里会默认生成__init__文件、
# 而创建文件夹 默认不会生成这个文件
# 我们自己很少会写包,最多的是调用大佬写的包,了解就可以

from chat import receive_msg
from chat.send_msg import x
# 都不会报错

receive_msg.py文件

# -*- coding: utf-8 -*-
# @Time    : 20-11-2 10:16
# @Author  : zhangjiulong
# @FileName: receive_msg.py
# @Software: PyCharm
y = 'receive_msg'
print('我是receive_msg的y变量')

send_msg.py文件

# -*- coding: utf-8 -*-
# @Time    : 20-11-2 10:15
# @Author  : zhangjiulong
# @FileName: send_msg.py
# @Software: PyCharm
x = 'send_msg'
print("我是send_msg文件的x变量")
P 149 面向对象的介绍

植物大战僵尸

P 150 面向对象的基本语法
# 面向对象的语法
# @ author: zhangjiong
# 类 是对一群具有相同特征或者行为的事务的一个统称,是抽象的,不能直接使用
# 对象是由类创建出来的一个具体的存在,可以直接使用
# 由哪一类创建出来的对象,就拥有哪一类中定义的属性和方法
#
# 定义类:类名怎么定义?使用class来定义一个类
# class 类名:类名一般遵守大驼峰命名法,每个单词的首字母大写

class Student(object):  # 关注这个类有哪些属性和行为
    # init里边用来写属性
    def __init__(self, name, age, height):  # 在init方法里,以参数的形式定义属性 self不用管,需要三个参数
        self.name = name
        self.age = age
        self.height = height

    # 行为定义为一个个函数
    def run(self):
        print(self.name, '正在跑步')

    def eat(self):
        print(self.name, "正在吃东西")


# Student() ==》会自动调用  __init__ 方法
# 使用Student()类创建了两个实例对象
s1 = Student('小明', 18, 1.75)
s2 = Student('小美丽', 22, 1.65)

s1.run()
s2.eat()

# 小明 正在跑步
# 小美丽 正在吃东西
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值