python笔记记录(包和模块)

模块导入:

'''
在python中,模块是代码组织的一种方式,把功能相近的函数放到一个文件中,一个文件(.py)就是一个模块(module),
模块名就是文件名去掉后缀py,这样做的好处是:

-提高代码的可复用、可维护性。一个模块编写完毕后,可以很方便的在其他项目中导入
-解决了命名冲突,不同模块中相同的命名不会冲突
--------------------------------------------------
常用标准库  说明
builtins  内建函数默认加载(不是默认的需要导入)
math   数学库
random  生成随机数
time  时间
datetime    日期和时间
calendar    日历
hashlib     加密算法
copy   拷贝
functools   常用工具类
os    操作系统接口
re    字符串正则匹配
sys   Python自身的运行环境
multiprocessing   多进程
threading  多线程
json   编码和解码 JOSN对象
logging  记录日志,调试

1、自定义模块
2、使用系统的一些模块

导入模块:
1、import 模块名
    模块名.变量 模块名.函数  模块名.类
2、from 模块名 import 变量 | 函数 | 类
    在代码中可以直接使用变量,函数,类
3、from 模块名 import *(表示该模块中所有内容)
通过__all__ = ['add','number]可以限制*全部导入的内容,列表中的表示可以访问到的内容
4、from 或者import的时候,会把整个模块代码加载到内存
如果不希望其进行调用。就会用到__name__
在自己的模块里面__name__叫:__main__
如果再其他模块中通过导入的方式调用的话:__name__:模块名

'''
__all__ = ['add','number'] #表示外面只能获取add和number
#变量
number = 100
name = 'huitao'
#函数
def add(*args):
    if len(args) > 1:
        sum = 0
        for i in args:
            sum += i
        return sum
    else:
        print('至少传入俩个参数......')


def minus(*args):
    if len(args) >1:
        m=0
        for i in args:
            m -= i
        return m
    else:
        print('至少传入俩个参数......')


def multipy(*args):
    pass


def divide(*args):
    pass

#类
class Calcula:
    def __init__(self,num):
        self.num = num

    def test(self):
        print("开始计算")

    @classmethod
    def test1(cls):
        print('类方法')


def test2():
    print("测试中")

#不希望模块外加载test2方法
if __name__  == '__main__':
    test2()
list1 = [4,2,7,8,9]
# #导入模块
# import calcu
#
# #使用模块中的函数 模块名.变量 模块名.函数  模块名.类
# less = calcu.add(*list1)
# print(less)
#
# #使用模块变量
#
# print(calcu.number)
#
# #使用模块中类
# cal = calcu.Calcula(89)
# cal.test()
#
# #类方法
# calcu.Calcula.test1()

#导入一部分
from calcu import add,number,Calcula
from calcu import number
sj = add(*list1)
print(sj)
sum = sj +number
print(sum)

注意:模块循环导入

'''
循环导入:俩个文件互相调用里面的方法|大型项目中需要很多python文件,由于架构不当,可能会出现模块之间的相互导入
A:模块
   def test()
       f()
B:模块
   def f()
       test()

避免产生循环导入:
1、重新架构
2、将导入的语句放到函数里面
3、把导入语句放到模块的最后

'''

包的导入:

#模块是文件与文件之间的调用
#包就是不同文件夹之间调用。不同包里面允许使用相同的模块名字
#包和文件夹区别
#包(Python package):里面放的是py文件,文件夹(Directory)放的是非py文件
#文件夹里面放一个__init__.py文件,文件夹就是一个包
#包命名:数字、字母、下划线,不能纯数字
#一个包中可以存放多个模块
#项目>包>模块>类、函数、变量
'''
from 包 import 模块
from 包.模块  import 类|函数|变量   (绝对路径)
from 包.模块 import *
通过__all__ = ['不想要被访问的模块'](只会在*的时候起作用)
同一个包里面也要使用from 包.模块  import 类|函数|变量  导入
from .模块  import 类|函数|变量   (同一个包下导入,可以直接使用.(相对路径))
'''

包下面__init__.py的作用:

__all__ = ['calcu'] #向外暴露的模块是什么
print('----','day05的init')

def create_app():
    print('创建app')
'''
一个文件夹里面有__init__.py就是一个包
导入包的时候,首先要执行的就是__init__.py,可以做数据初始化
作用:0、结合__all__进行使用
1、当导入包的时候,把一些初始化的函数,变量,类定义在__init__.py文件中
2、此文件中函数,变量等的访问,只需要通过包名,函数.......
3、from 模块 import*   表示可以使用模块里面的所有内容,如果没有定义__all__所有的都可以访问,但是如果添加上__all__,只有all里面的可以访问。
4、from 包 import*   表示该包中的内容是不能访问的,__init__里面的__all__向外暴露可以访问的模块

'''
#导入包
import day05
#from day05 import*

day05.create_app()

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值