python模块导入灰色_Python包、模块和导入

Python的好处在于,你不需要懂很多概念,你就有机会投入工作,同样,问题也有机会随时发生。

包、模块

foo

--bar.py

--sim.py

--__init___.py

简单来讲,包就是一个目录,而模块对应一个文件,包可以包含子包:

foo

--subf

--test.py

--testb.py

--__init__.py

--bar.py

--sim.py

--__init__.py

包的导入

假设我们在这些包中定义了一些简单的函数。

bar.py

# encoding: utf-8

# bar.py

def add(p1, p2):

return p1+p2

foo/subf/testb.py

# encoding: utf-8

# testb.py

def sub(p1, p2):

return p1-p2

同时所有的_init_.py文件内容都是空。

当完成一个包的定义时,我们可以在其他代码块中引用这些包。

from foo import bar

# 或者

import foo.bar

# 或者

from foo.bar import add

# 这种方式不推荐,会降低代码可读性,增加维护成本

from foo.bar import *

导入有一个前提。是foo包要在包所有路径内,这里就不再提这块了,可以参考本文引用。

包相对导入

如果当前模块是test.py,那么它可以这样使用相对导入使用其他模块的功能:

from .testb import sub

from ..bar import sub

隐式代码执行

当第一次引用其他模块时,会执行该模块全局范围的语句,sim.py定义如下:

# encoding: utf-8

# sim.py

print('This is a sample')

class A:

print('This is a sample in Class')

def __init__(self):

print('This is a sample in class method')

当该模块第一次被引用时,可以看到输出:

This is a sample

This is a sample in Class

引用https://stackoverflow.com/questions/448271/what-is-init-py-for​stackoverflow.comhttps://docs.python.org/zh-cn/3/reference/import.html​docs.python.orghttps://docs.python.org/zh-cn/3/tutorial/modules.html​docs.python.org

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值