python 包和模块开发_python学习Day24--模块和包+项目开发规范

【知识点】

1、模块

(1)from...import....

# 导入了什么就能使用什么,不导入的变量不能使用;

# 不导入不意味着不存,而是没有建立文件到模块中其他名字的引用;

# 当模块中导入的方法或者变量 和 本文件重名的时候,那么这个名字的只代表最后一次对它赋值的那个方法或者变量;

2f107cde704bb494fc6231b3df6780ea.png

1 from my_module importlogin2 #导入了什么就能使用什么,不导入的变量不能使用

3 #不导入不意味着不存,而是没有建立文件到模块中其他名字的引用

4 deflogin():5 print("in my login")6 #当模块中导入的方法或者变量 和 本文件重名的时候,那么这个名字的只代表最后一次对它赋值的那个方法或者变量

7 login()

(2)from...import...as...(重命名,导入多个)

1 from my_module import login as l,name as n

(3)from...import *

# 导入模块的所有东西都可以使用了

# __all__可以控制*导入的内容

1 __all__ = ['login']2

3 name = 'alex'

4

5 deflogin():6 print('login',name)7

8 importsys9 my_module = sys.modules[__name__]10 getattr(my_module,'login')()

【注意】此时,其他引用该模块时,*能控制只能导出login,其他的通过*不能导入

(4)模块相关的其他知识

# 把模块当成脚本运行:从本模块中反射本模块中的变量

# 模块的搜索路径

# 重新加载模块

# pyc编译文件

① 把模块当成脚本运行:

# 运行一个py文件的两种方式:

A、 以模块的形式运行  import my_module

如果不想模块在导入的情形下执行(比如模块里的print()等内容):在模块里添加如下内容:(脚本运行下都是__name__='__main__')

1 if __name__ == '__main__':2 print('饿了么')3 print(__name__,type(__name__)) #'__main__'/'my_module'

【注意】:

# 在编写py文件的时候,所有不在函数和类中封装的内容都应该写在if __name__=='__main__':之下 (快捷键,打印main按tab)

# 在使用发射自己模块中的内容的时候,应该写以下内容:

1 importsys2 getattr(sys.modules[__name__],'变量名')

B、直接pycharm运行   cmd运行

② pyc编译文件和重新加载模块

重新加载:(开发时不能使用,拿着玩吧)

# 在import之后再修改这个被导入的模块,程序是感知不到的,reload这种方式可以强制程序再重新导入一次

1 importaaa2 importimportlib3

4 importlib.reload(aaa) #表示重新加载

(4)模块的循环引用

在模块的导入中,不要产生循环引用问题

8099a47b8461e88ec7009343bfbbf635.png

2、包:集合了一组py文件 提供了一组复杂功能的。

# 为什么要有包呢?  当提供的功能比较复杂,一个py文件写不下的时候

# 包里有什么?  包里至少有一个__init__.py

(1)简单的导入:import 包.包.模块——包.包.模块.变量(使用)

from 包.包 import 模块(推荐这种)

(2)导入包  相当于执行了包下面的__init__.py文件(读框架源码的时候)

# 包中模块的绝对导入:

① 在第一级包下面的__init__.py文件里写入要导入的下一级包: from 包 import 包

② 在第二级包下面的__init__.py文件里写入要导入的下一级包或模块:from 包.包 import 包/模块

以此类推往下进行

# 包中模块的相对导入:

① from . import 模块(其中.相当于当前目录,..表示上一层目录)  在包下面的__init__.py文件里写入

② 与上面的绝对导入思想一致,只是用 . 获取相对路径

③ 相对导入只能被模块执行,不能以脚本执行

(3)从包里到处一个模块:获取模块的path,然后添加路径:sys.path.append(path)

(4)从一个包引用另一个包里的模块:

23fcd0cbb499ca2b2c981dc4ee810041.png

1 importsys2 #获取路径

3 ret=__file__.split('/') #['D:', 'wendang', 'PyCharmCode', 'MyPycharm', 'day24 模块', 'fff', 'bbb', 'main.py']

4 base_path='/'.join(ret[:-2]) #插入‘/’

5 #添加路径

6 sys.path.append(base_path)7 print(base_path)8 #导入模块

9 from xxx importhello10 hello.func()

3、项目开发规范

23e1c69a7834c068872cb5bbf4f87816.png

时间:2020-02-18          01:07:35

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值