<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[core571的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/core571</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; core571]]></copyright><item><title><![CDATA[python 虚拟环境]]></title><link>https://blog.youkuaiyun.com/core571/article/details/118875221</link><guid>https://blog.youkuaiyun.com/core571/article/details/118875221</guid><author>core571</author><pubDate>Tue, 11 Jul 2023 17:38:11 +0800</pubDate><description><![CDATA[使用虚拟环境，创建一个完全独立的局部python环境，在此环境中，安装所有与这个项目相匹配的库。
一个项目使用一个局部的独立的python环境；互相之间没有干扰。这个局部的独立的python环境就称为虚拟环境。完全模拟系统全局python环境的使用

...]]></description><category></category></item><item><title><![CDATA[python 包和模块 发布库]]></title><link>https://blog.youkuaiyun.com/core571/article/details/118631571</link><guid>https://blog.youkuaiyun.com/core571/article/details/118631571</guid><author>core571</author><pubDate>Sun, 18 Jul 2021 11:28:27 +0800</pubDate><description><![CDATA[官方文档

]]></description><category></category></item><item><title><![CDATA[python 包和模块 三方包]]></title><link>https://blog.youkuaiyun.com/core571/article/details/118559524</link><guid>https://blog.youkuaiyun.com/core571/article/details/118559524</guid><author>core571</author><pubDate>Sat, 10 Jul 2021 00:47:54 +0800</pubDate><description><![CDATA[标准模块有时不能满足我们的需求时使用三方模块
标准模块由官方发布，使用可靠，有健全的使用文档说明
三方模块由网友提供，更新不及时
安装方式：

源码安装，自己手动去某个地方下载，再安装到本地。
包管理器安装，更加简单的自动化的为用户安装管理包和模块，只需要一个或几个命令就可以完成

常见已发布三方包和模块的形式

源码，单文件模块，多文件模块，由包管理工具发布的项目。基于distutils
工具发布的项目特性，包含setup.py。setuptools也是基于distutils
.egg，setuptool]]></description><category></category></item><item><title><![CDATA[python 包和模块]]></title><link>https://blog.youkuaiyun.com/core571/article/details/108835574</link><guid>https://blog.youkuaiyun.com/core571/article/details/108835574</guid><author>core571</author><pubDate>Wed, 07 Jul 2021 22:44:57 +0800</pubDate><description><![CDATA[基本概念
模块
为了使代码更容易维护，提高代码重用价值；可以将一组相关功能的代码写入一个单独的py文件中，供别人导入使用，这个py文件就被称作是一个模块
包
包是一个有层次的文件目录结构，它定义了由n个模块或n个子包
具体表现形式：包含__init__.py 文件的目录，这个目录下一定得有这个__init__.py文件和其它模块或子包
库
参照其他编程语言的一个喊法
完成一点功能的代码集合
具体表现可以是一个模块，也可以是包
框架
一个架构层面的概念
从库功能角度来看，解决一个开放性问题而设计的具有一定约束]]></description><category></category></item><item><title><![CDATA[【12月原创】基于 stm32 LL 库移植 RT-Thread Nano]]></title><link>https://blog.youkuaiyun.com/core571/article/details/111767602</link><guid>https://blog.youkuaiyun.com/core571/article/details/111767602</guid><author>core571</author><pubDate>Sat, 26 Dec 2020 19:59:29 +0800</pubDate><description><![CDATA[RT-Thread Nano 移植主要包含Kernel部分和添加控制台与Finsh 这两部分，主要参考文档中心的内容。
准备工作
STM32Cube_FW_F1_V1.6.0
开发是直接在STM32Cube_FW_F1_V1.6.0\Projects\STM32F103RB-Nucleo\Examples_LL\GPIO\GPIO_InfiniteLedToggling 这个工程上进行移植的。
RealThread.RT-Thread.3.1.3.pack
在MDK移植有介绍。
Xshell-7.0.005]]></description><category></category></item><item><title><![CDATA[快速上手ARM体系结构]]></title><link>https://blog.youkuaiyun.com/core571/article/details/109145725</link><guid>https://blog.youkuaiyun.com/core571/article/details/109145725</guid><author>core571</author><pubDate>Sun, 18 Oct 2020 15:50:40 +0800</pubDate><description><![CDATA[快速上手ARM体系结构
MDK5 安装 patch
课程芯片选择为 sansumg S3C2440A, MDK5 需要安装  Legacy Support

MDK5 新建工程
需要选择 Legacy Device Database，才有S3C2440A

Build Target
Build 出错，需要修改linker
Error: L6630E
.\Objects\test.axf: Error: L6630E: Invalid token start expected number or ( but ]]></description><category></category></item><item><title><![CDATA[Python 错误和异常 概念]]></title><link>https://blog.youkuaiyun.com/core571/article/details/108782934</link><guid>https://blog.youkuaiyun.com/core571/article/details/108782934</guid><author>core571</author><pubDate>Sun, 27 Sep 2020 20:11:00 +0800</pubDate><description><![CDATA[1

]]></description><category></category></item><item><title><![CDATA[Python 面向对象 类的设计原则]]></title><link>https://blog.youkuaiyun.com/core571/article/details/108782310</link><guid>https://blog.youkuaiyun.com/core571/article/details/108782310</guid><author>core571</author><pubDate>Thu, 24 Sep 2020 20:35:02 +0800</pubDate><description><![CDATA[面向对象遵循的原则：SOLID
S(Single Responsibility Rrinciple)
单一职责原则，一个类只负责一项职能。
好处：易于维护，写出高内聚的代码，易于代码复用
O(Open Closed Principle)
开放封闭原则，对扩展开放，对修改关闭。
易于维护，保证代码安全性以及扩展性
通过基类，以及抽象类等方案进行方法的统一
L(Liskov substitution Principle)
里氏替换原则，使用基类引用的地方必须能使用继承类的对象
防止代码出现不可预知的错误，方便针]]></description><category></category></item><item><title><![CDATA[Python 面向对象 三大特性 综合案例]]></title><link>https://blog.youkuaiyun.com/core571/article/details/108762193</link><guid>https://blog.youkuaiyun.com/core571/article/details/108762193</guid><author>core571</author><pubDate>Thu, 24 Sep 2020 19:59:21 +0800</pubDate><description><![CDATA[class Dog(object):
    def __init__(self, name, age = 1):
        self.name = name
        self.age = age
    
    def eat(self):
        print('名字是{}, 年龄{}岁的小狗在吃饭'.format(self.name, self.age))

    def play(self):
        print('名字是{}, 年龄{}岁的小狗在玩'.format(]]></description><category></category></item><item><title><![CDATA[Python 面向对象 抽象类和抽象方法]]></title><link>https://blog.youkuaiyun.com/core571/article/details/108718079</link><guid>https://blog.youkuaiyun.com/core571/article/details/108718079</guid><author>core571</author><pubDate>Mon, 21 Sep 2020 20:25:10 +0800</pubDate><description><![CDATA[抽象类
一个抽象出来的类，并不是某一个具体的类，不能直接创建实例的类，创建会报错
抽象方法
抽象出来的一个方法，不具备具体实现，不能直接调用，子类不实现会报错
python 中的实现
无法直接支持，需要借助一个模块 import abc
设置类的元类为 abc.ABCMeta
使用装饰器修饰抽象方法 @abc.abstractmethod
import abc

class Animal(object, metaclass=abc.ABCMeta):
    @abc.abstractmethod
    ]]></description><category></category></item><item><title><![CDATA[Python 面向对象 三大特性 多态]]></title><link>https://blog.youkuaiyun.com/core571/article/details/108717917</link><guid>https://blog.youkuaiyun.com/core571/article/details/108717917</guid><author>core571</author><pubDate>Mon, 21 Sep 2020 20:09:17 +0800</pubDate><description><![CDATA[多态：一个类所延申的多种形态
调用时的多种状态：在继承的前提下，使用不同的子类，调用父类的同一个方法，产生不同的功能
python当中，没有真正意义的多态，也不需要多态

]]></description><category></category></item><item><title><![CDATA[Python 面向对象 三大特性 继承]]></title><link>https://blog.youkuaiyun.com/core571/article/details/108502560</link><guid>https://blog.youkuaiyun.com/core571/article/details/108502560</guid><author>core571</author><pubDate>Sun, 20 Sep 2020 16:42:35 +0800</pubDate><description><![CDATA[概念
一个类拥有另外一个类的资源的方式之一
并不是资源的复制，变成双份资源，而是资源的使用权
资源指非私有的属性和方法
分类
单继承
class Animal:
    pass

class Dog(Animal):
    pass

多继承
class Animal:
    pass

class xxx:
    pass

class Dog(Animal, xxx):
    pass


...]]></description><category></category></item><item><title><![CDATA[Python 面向对象 三大特性 封装]]></title><link>https://blog.youkuaiyun.com/core571/article/details/108501907</link><guid>https://blog.youkuaiyun.com/core571/article/details/108501907</guid><author>core571</author><pubDate>Wed, 09 Sep 2020 20:52:18 +0800</pubDate><description><![CDATA[概念
将一些属性和相关方法封装在一个对象中
对外隐藏内部具体实现细节，内部实现，外界不需要关心。外界只需要根据内部提供的接口去使用就可以。
好处：

使用起来更加方便

因为已经把很多相关的功能，封装成一个整体
类似于像外界提供一个工具箱
针对不同的场景，使用不同的工具箱就可以


保证数据的安全

针对安全级别高的数据，可以设置为私有
可以控制数据为只读，外界无法修改
也可以拦截数据的写操作，进行数据校验和过滤


利于代码的维护

如果后期，功能代码需要维护，则直接修改这个类内部代码即可
只要保证接口名]]></description><category></category></item><item><title><![CDATA[Python 面向对象 小节案例]]></title><link>https://blog.youkuaiyun.com/core571/article/details/108392159</link><guid>https://blog.youkuaiyun.com/core571/article/details/108392159</guid><author>core571</author><pubDate>Tue, 08 Sep 2020 21:16:21 +0800</pubDate><description><![CDATA[计算器
通过类属性的方式：
# 计算器 实现一些基本操作，加减乘除运算，以及打印结果操作

class Caculator:
    __result = 0

    @classmethod
    def first_value(cls, v):
        cls.__result = v
    
    @classmethod
    def jia(cls, n):
        cls.__result += n
    
    @classmethod
    def jian(]]></description><category></category></item><item><title><![CDATA[Python 面向对象 内存管理机制]]></title><link>https://blog.youkuaiyun.com/core571/article/details/107324489</link><guid>https://blog.youkuaiyun.com/core571/article/details/107324489</guid><author>core571</author><pubDate>Mon, 31 Aug 2020 21:30:30 +0800</pubDate><description><![CDATA[存储方面

在 python 中万物皆对象，不存在基本数据类型
所有数据类型，都会在内存中开辟一块空间进行存储。会根据不同的类型以及内容，开辟不同的空间大小进行存储。
返回该空间的地址给外界接收（称为‘引用’），用于后续对这个对象的操作，
可以通过id()函数获取内存地址（10进制）
通过hex()函数可以查看对应的16进制地址

class Person(object):
    pass

p = Person()
print(p)
print(id(p))
print(hex(id(p)))

&lt]]></description><category></category></item><item><title><![CDATA[Python 面向对象 生命周期方法]]></title><link>https://blog.youkuaiyun.com/core571/article/details/107304924</link><guid>https://blog.youkuaiyun.com/core571/article/details/107304924</guid><author>core571</author><pubDate>Sun, 12 Jul 2020 21:13:38 +0800</pubDate><description><![CDATA[生命周期概念
指的是一个对象，从诞生到消亡的过程。当一个对象被创建时，会在内存中分配相应的内存空间进行存储。当一个对象不在使用，为了节约内存，就把这个对象释放。
监听对象生命周期
__new__
当我们创建一个对象是用于给这个对象分配内存的方法。
通过拦截这个方法，可以修改对象的创建过程。比如，单例设计模式

class Person:
    def __new__(cls, *args, **kwargs):
        print('新建了一个对象，但是被我拦截了')
        pass
 ]]></description><category></category></item><item><title><![CDATA[Python 面向对象 装饰器]]></title><link>https://blog.youkuaiyun.com/core571/article/details/107304800</link><guid>https://blog.youkuaiyun.com/core571/article/details/107304800</guid><author>core571</author><pubDate>Sun, 12 Jul 2020 20:31:25 +0800</pubDate><description><![CDATA[class check():
    def __init__(self, func):
        self.f = func
    
    def __call__(self, *args, **kwargs):
        print('登陆验证')
        self.f()

def fashuoshuo():
    print('发说说')
             
fashuoshuo = check(fashuoshuo)



fashuoshuo()

登陆验证
发]]></description><category></category></item><item><title><![CDATA[Python 面向对象 描述器]]></title><link>https://blog.youkuaiyun.com/core571/article/details/107136271</link><guid>https://blog.youkuaiyun.com/core571/article/details/107136271</guid><author>core571</author><pubDate>Sun, 05 Jul 2020 20:17:04 +0800</pubDate><description><![CDATA[概念
可以描述一个属性操作的对象
定义
定义方式1 property
class Person():
    def __init__(self):
        self.__age = 10
    
    def get_age(self):
        return self.__age
    
    def set_age(self, value):
        if value &lt; 0:
            value = 0
        self.__age = ]]></description><category></category></item><item><title><![CDATA[Python 面向对象 补充 方法相关]]></title><link>https://blog.youkuaiyun.com/core571/article/details/106021804</link><guid>https://blog.youkuaiyun.com/core571/article/details/106021804</guid><author>core571</author><pubDate>Sun, 05 Jul 2020 10:19:19 +0800</pubDate><description><![CDATA[私有化方法
class Person(object):
    __age = 18

    def __run(self):
        print('pao')

内置特殊方法
生命周期方法
其他内置方法：信息格式化操作，调用操作，索引操作，切片操作，迭代器，描述器
生命周期方法
信息格式化操作
__str__
面向用户使用
class Person(object):
    def __init__(self, n, a):
        self.name = n
        self.]]></description><category></category></item><item><title><![CDATA[Python 面向对象 补充 属性相关]]></title><link>https://blog.youkuaiyun.com/core571/article/details/105905975</link><guid>https://blog.youkuaiyun.com/core571/article/details/105905975</guid><author>core571</author><pubDate>Mon, 04 May 2020 21:09:45 +0800</pubDate><description><![CDATA[私有化属性
Python 并没有真正的私有化支持，但是可以使用下划线完成伪私有化的效果。
类属性和实例属性遵循相同的规则。
x
公有属性

类内部访问
子类内部访问
模块内其他位置访问

类访问
实例访问


跨模块访问

import 形式导入
from 模块 import * 形式导入



class Animal:
    x = 10
    def test(self):
      ...]]></description><category></category></item></channel></rss>