2018年8月13日包的相对导入和绝对导入,包的本地发布和网络发布

今天遇到的新单词:
plugin n插件
core n核心
archive v存档
upload v上传
properly adv适当的
statement n声明


怎么控制英雄子弹的发射频率?
程序中表示一个数的时候尽量用一个变量去表示,因为需要修改数据的时候只需改变这个变量值就可以了,
而无需在代码的其他部分去修改数据,比较简单方便,类中表示一个数的时候可以追加两个属性用于限制,一个初值一个目标值。
控制子弹的发射频率用的就是这个,调用英雄的发射方法,在英雄中设置两个追加属性,当初值达到目标值的时候才调用发射方
法用于攻击,如果不加限制得话按一下空格键就会调用多次发射方法。

怎么跳转到第二关?
教训!我用的面向过程,代码的复用性根本没有,需要把第一关所有的代码重新写一遍,如果用面向对象的话只
需要创建对象传入相应的属性值即可。多看面向对象的代码,学会面向对象的思维。面向对象的编程思想在开始的
时候可能会麻烦一点,但是在后边项目的功能拓展性和代码的复用性都会提高。

让精灵斜着走的方法:在y轴有速度的基础上给x轴一个速度就可以实现。

怎么控制敌机子弹的发射频率:


为什么赢了之后把分数置零就会出现bug,over结束后图片的渲染有问题,因为是等几秒之后就能正常显示,所以over结束
那个地方的代码需要修改。


继承父类的真正作用?生成图片和让图片动起来

*************************************************

在不同的人数阶段要学习不同的东西,开始要学习应用性的,走向管理之后要学习基础性的
写程序的时候尽量提高代码的可读性和代码的复用性

a = 1000
id(a)是查看a的内存地址


python setup.py install 安装的压缩包不能通过pip uninstall 模块名称进行卸载,
只能通过到文件内直接删除文件才能彻底删除,通过pip install 模块名称的可以通过uninstall进行卸载

**********************************************
压缩后的包本地发布和网络发布的步骤:
在一个已经开发好的包文件里面(已经由__init__文件)建立一个setup.py模块,setup模块中写包的信息:

# 引入构建包信息的模块
from distutils.core import setup
# 定义发布的包文件的信息
setup(
name=“damu_pkg01”,        # 发布的包文件名称
version=”1.0”,            # 发布的包的版本序号
description=”我的测试包”, # 发布包的描述信息
author=”大牧莫邪”,        # 发布包的作者信息
author_email=“  ”         # 作者联系邮箱信息
py_modules=[‘__init__.py’,’..’,..]    #发布的包中的模块文件列表,不用写setup
)

执行当前程序包文件的构建操作命令:按照标准格式组织包中的所有数据文件
python setup.py build
REMARK:构建完毕的文件
可以通过python setup.py install命令可以直接把构建完毕的文件当成第三方模块进行安装到本机

执行命令进行包的打包发布
python setup.py sdist
REMARK:打包的文件,主要是方便进行网络传输,打包之后会在dist中创建包含
包中所有信息的tar.gz压缩包文件;该文件就可以通过git等方式提交给对应的开源组织发布你的自定义模块了!

在网络发布的步骤:
然后在Pypi这个网站上进行注册,然后在终端安装第三方模块twine:用于上传我们打包的项目文件
pip install twine
上传项目
twine upload dist/*

然后就可以在Pypi网站上查找到我们自己发布的模块,并且可以通过pip 进行下载:pip install 模块名

********************************************
           相对引入和绝对引入
有了包之后才有了相对引入f这种引入方式的存在意义
绝对引入: 用到绝对引入的时候需要mark一下设为源文件夹,以下两种都是绝对引入的方式:
import plane
from plane import test1
用import可以直接引入模块,用法:import 包名
也可以直接引入包里面的模块,用法;import 包名.模块名,用import引入最低级也要是模块级别的文件

相对引入:  相对引入的命令必须要在终端中才能运行,输入的命令是:python -m 父目录名.main.py,并且引入的东西都需要
先在__init__文件中事先定义才能正常运行!在同一个包文件下引用包内的其他模块可以直接用不需要在__init_里面写东西。
相对引入直接引入模块:
from . import test1     

1.相对引入直接引入包名:
from . import 包名 :

2.相对引入直接引入包中的模块
from .plane import utils        直接引入模块名也需要在__init__文件中声明
print(utils.msg)                 这个是填写impot后边的名称
 

3.相对引入可以直接引入属性名/方法名/类型名称
from .plane.utils import func
func()


#这是相对于父目录进行的相对引入,执行的时候不能直接在本模块中执行,
因为在本模块中执行的话python解释器就会认为main.py就是顶层模块!是唯一一个,不能再相对引入,
所以为了不报错,采用这种引用方式的正确的执行命令是在终端中输入:python -m 父目录名.main.py,找到参照物才能正确执行
有了from的引入方式之后可以引入比模块名更加细致的东西,比如可以引入方法名/属性名/类名
from .包名 import 模块名, 必须要在终端运行

引入的是包的__init__文件中的内容,所以如果想用这种方式运行显示什么内容,需要先在
__init__文件中进行定义或者引入。__init__模块中可以是下面的内容:
_all__ = ["utils"]  告诉你你可以引入什么模块
name = "msg"
from . import utils
备注:切记~不要在包声明文件__init__.py中没有定义任何代码的情况下,通过包名称操作包中的模块代码,那样会出错
 

猜你喜欢

转载自blog.csdn.net/qq_40994972/article/details/81638111