basicPython-3

Pandas入门教程(二十二):股票数据分析实战——yfinance 获取数据、技术指标与收益率分析 把 Pandas 用在真实场景,才能体会它的价值。本文以茅台股票为例,用 yfinance 获取历史行情,完成缺失值处理与列筛选,绘制收盘价曲线,计算 SMA 移动平均线与 RSI 相对强弱指数,并通过日收益率、累计收益率和波动率完成完整的量化分析流程。 阅读详情

类和对象

公有属性

"""类和对象(公有)"""


# 创造一个正义派的神仙类
class God:
    # 共有属性
    occupation = "神"
    character = "善良"

    # __init__方法(对象初始化)
    def __init__(self, name, grade):
        self.name = name
        self.grade = grade

    def infomation(self):
        print("神级强者 [%s] 的修炼等级为 [%s]" % (self.name, self.grade))


# 实例化对象
obj_1 = God("唐三", 150)
obj_2 = God("马红俊", 110)

# 调用对象的方法
obj_1.infomation()

私有属性

"""类和对象(私有)"""


# 创建一个电影类
class Movie:
    # 私有属性
    __stuff = '电影'
    __the_style = '抗日神剧'

    # __init__方法(初始化对象)
    def __init__(self, name, public_time):
        self.__name = name
        self.__time = public_time

    # 私有方法
    def __infomation(self):
        print(f"""
        物品:{Movie.__stuff}
        类型:{Movie.__the_style}
        名称:{self.__name}
        发布时间:{self.__time}
        """)

    # 私有方法
    def __change(self):
        dict_info = {
            '0': '取消修改',
            '1': '名称',
            '2': '发布时间'
        }
        while True:
            for i in dict_info:
                print(f"{i}:{dict_info[i]}")
            func_num = input('请输入功能号>>>')
            if func_num == '0':
                return
            elif func_num == '1':
                self.__name = input('修改名称为:').strip()
                return
            elif func_num == '2':
                self.__time = input('修改时间为:').strip()
                return
            else:
                print('请输入正确的功能号!')

    # 共有方法(为上面的私有属性和私有方法提供一个对外使用的接口)
    # 即:上面的所有私有属性和私有方法都无法直接调用,
    # 而是通过下面的get方法进行统一安全管理,间接性达到---调用或修改---的目的
    def get(self):
        print('可执行的功能')
        dict_info = {
            '0': '退出',
            '1': '修改信息',
            '2': '查看信息'
        }
        while True:
            for i in dict_info:
                print(f"{i}:{dict_info[i]}")
            func_num = input('请输入功能号>>>')
            if func_num == '0':
                return
            elif func_num == '1':
                self.__change()
                return
            elif func_num == '2':
                self.__infomation()
                return
            else:
                print('请输入正确的功能号!')


# 创建对象(实例化对象):
movie_1 = Movie('黑狐', 2016)
movie_2 = Movie('铁血使命', 2013)

"""下面是使用对象的部分"""
# 1.检测能否调用私有属性和私有方法
# print(movie_1.stuff)
# movie_2.infomation()

# 2.通过get入口,正常的调用私有属性和私有方法
movie_1.get()

@property

"""类和对象(将一个属性转化为一个方法时候,可以在方法上面加一个@property装饰器)"""

"""
例如,定义一个矩形类,
并定义用 @property 修饰的方法操作类中的 area 私有属性,
代码如下:
"""


# 高级玩法
class Rect:
    def __init__(self, area):
        self.__area = area

    @property
    def area(self):
        return self.__area


# 实例化对象
obj_1 = Rect(10)

# 间接调用私有属性"__area"
print(obj_1.area)

"""
小结:
以"."点的形式调用,不知道的人还以为它是"属性",但其实它是"方法"
而又因为"方法"的"封装"特性,所以数据被"神不知鬼不觉的保护起来了"
例如,某个"菜鸡黑客"以为它是"属性",想通过" obj_1.area = 60 "这语句
对数据进行篡改,但他惊讶的发现,既然失效了?他很困惑,但我们却都明白
这个所谓的 obj_1.area 根本就不是属性,而是经过伪装的"方法(函数)"
"""


# 低级玩法:
class Rect_ordinary:
    def __init__(self, area):
        self.__area = area

    def area(self):
        return self.__area


# 实例化对象
obj_2 = Rect_ordinary(10)

# 间接调用私有属性"__area"
print(obj_2.area())

"""
小结:
这种方式,菜鸡黑客一眼看穿它是"方法"而不是属性,
所以,他会立刻寻找其他方法进行数据篡改,
而不是一脸懵逼的思考为什么直接篡改不了
"""

"""总结"""
# 既要保护类的封装特性,又要让开发者可以使用“对象.属性”的方式操作类属性,Python 提供了 @property 装饰器。
# 通过 @property 装饰器,可以直接通过方法名来访问方法,不需要在方法名后添加一对“()”小括号。

增删改查

"""类和对象("读" "改" "删")"""


# 为私有属性 __age 提供 "读" "改" "删" 的操作
# 即:为私有属性 __age 提供 getter() setter() deleter() 方法
# 注意!对某数据提供"读" "改" "删"的前提是>>>数据有"读"操作---getter方法,因为可读,证明数据存在
class Human():
    def __init__(self, age):
        self.__age = age

    # 下面的操作是getter方法,即:"读"
    @property
    def age(self):
        return f"年龄>>>{self.__age}"

    # 注意,在定义setter方法时,方法名称必须与只读属性的名称相同,并且应该在定义getter方法之后
    # 下面的操作是setter方法,即:"改(设置)"
    @age.setter
    def age(self, new_age):
        if type(new_age) is not int:
            raise "数据错误! 请传入int数据类型!"
        if not 0 <= new_age <= 150:
            raise "数据错误!请输入0~150范围的数据!"
        self.__age = new_age

    # 注意的地方同setter方法一样
    # 下面的操作是deleter方法,即:"删"
    @age.deleter
    def age(self):
        del self.__age
        print("已删除")


# 创建对象
obj_1 = Human(18)

"""调用对象功能"""

# 执行"读"操作---getter
print(obj_1.age)

# 执行‘改’的部分---setter
obj_1.age = 10
print(obj_1.age)  # 验证

# 执行‘删’的部分---deleter
del obj_1.age

类方法

"""类方法"""


class Hero:
    # 实例方法————之构造方法
    def __init__(self, age):
        self.__age = age

    # 实例方法————之读取年龄方法
    def info(self):
        return self.__age

    # 类方法
    @classmethod
    def creat_obj(cls, age):
        obj_new = cls(age)
        return obj_new

    # 静态方法(对象和类都可以调用它,而且也没有了自动传参的效果了)
    @staticmethod
    def func():
        print("我是个静态方法,跟放到'类'外面的普通函数没什么区别")


# 创建对象
obj_1 = Hero(188)

"""执行部分"""

# 调用对象的---实例方法---info()
print(obj_1.info())

# 调用Hero类的---类方法---create_obj()
print(Hero.creat_obj(666).info())

# 调用---静态方法
obj_1.func()
Hero.func()

继承

"""继承"""


# 父类
class Human:
    star = 'earth'

    def __init__(self, name, age, gender):
        self.name = name
        self.age = age
        self.gender = gender


# 子类(1)
class Chinese(Human):
    nation = 'China'

    def speak_chinese(self):
        print(f"{self.name}正在说普通话")

    def __init__(self, name, age, gender, money):
        Human.__init__(self, name, age, gender)
        self.money = money


# 子类(2)
class American(Human):
    nation = 'America'

    def speak_English(self):
        print(f'{self.name}正在说英语')


# 实例化对象
dy_obj = Chinese('董永', 18, "男", 1000)

# 调用部分
dy_obj.speak_chinese()
print(dy_obj.star)
print(dy_obj.nation)

MixIns 机制

"""MixIns机制"""


# mix in 混合


class Fowl:  # 家禽类
    pass


class SwimMixIn:  # 这个类,必须表示某种功能而不是事物
    def swimming(self):
        pass


class Chicken(Fowl):  # 鸡类
    pass


class Duck(SwimMixIn, Fowl):  # 鸭类
    pass


class Goose(SwimMixIn, Fowl):  # 鹅类
    pass

super

"""super()方法---是用于调用父类的一个方法"""

"""

首先提一下,新式类和经典类:
新式类都从object继承,经典类不需要
super只能用在新式类里面,不能用在经典类

super() 是用来解决"多重继承"问题的
当子类继承多个父类时候,先查找哪个父类??
通过 "类名.mro" 可以查看super的调用表
此表是根据某算法得出---解决了查找问题

super()函数的用法:
以下面的代码为例
super(Chinese, self).__init__()
1.根据mro的调用表查找--输入的"chinese类"后面的类是什么[而输入的self一般不变]
2.super-->将它下一个类返回(假设chinese类的下一个类是A类,则返回A类)
3.A类.__init__() ---> 调用 它的__init__()方法

补充:
如果在Human类中,要写 super(Human, self).xxx
可以直接使用 super().xxx (简写模式,但这种写法仅在 Python 3 中支持)

"""


# 父类
class Human:
    star = "earth"

    def __init__(self, name, age, gender):
        self.name = name
        self.age = age
        self.gender = gender


# 子类(1)
class Chinese(Human):
    nation = "China"

    def speak_chinese(self):
        print(f"{self.name}正在说普通话")

    def __init__(self, name, age, gender, money):
        super(Chinese, self).__init__(name, age, gender)
        self.money = money


# 子类(2)
class American(Human):
    nation = "America"

    def speak_English(self):
        print(f'{self.name}正在说英语')


# 实例化对象
dy_obj = Chinese('董永', 18, "男", 1000)

# 调用部分
print(Chinese.mro())

多态

"""多态"""


class Car:
    def run(self):
        print("开始跑", end=' ')


class Benz(Car):
    def run(self):
        super().run()
        print('加98号汽油')


class Lx(Car):
    def run(self):
        super().run()
        print("充电")


class Auto(Car):
    def run(self):
        super().run()
        print("加92号汽油")


# 实例化:造三台汽车
car1 = Benz()
car2 = Lx()
car3 = Auto()

car1.run()
car2.run()
car3.run()

print('\n', Benz.mro())

反射

"""反射"""

""" 反射机制---"判断" "读取" "修改" "删除" XXX的属性"""
# hasattr()
# getattr()
# setattr()
# delattr()
"""
补充:
getattr(obj, 'name', False) 它可以传3个参数
如果 obj 没有 ’name‘ 这个属性
它将返回--->我们指定的’第三个参数‘
在本例中,它会返回 False
"""


class Hero():
    def __init__(self, name):
        self.name = name


# 创建对象
obj = Hero("yexun")

# 判断对象obj是否有"name"的属性,有则返回True,否则False
print(hasattr(obj, 'name'))

# 读取对象obj的"name"属性
print(getattr(obj, 'name'))

# 修改对象的的"name"属性
setattr(obj, 'name', 'I am not yexun again!')
print(obj.name)

# 删除对象的"name"属性
delattr(obj, 'name')
print(obj.__dict__)

"""反射的具体案例:(体验一下它的魅力)"""


class Ftp:
    def put(self):
        print('正在上传数据...')

    def get(self):
        print('正在下载数据...')

    def warning(self):
        print('此功能不存在!')

    def use(self):
        option = input('请输入功能>>>')
        # [读取对象]getattr(obj, 'name', XXX) 如果对象obj没有"name"属性,它将返回第三个参数XXX
        getattr(self, option, self.warning)()


# 创建对象
obj_new = Ftp()

# 使用ues()方法来"控制"其他方法
while True:
    s = input("\nQ退出>>>").strip()
    if s == "Q" or s == "q":
        break
    obj_new.use()

其他方法

"""
__str__方法(可以实现 print(对象) 得到一个自定义的值)
注意!使用这个函数必须要有"字符类型"的返回值!
"""

""" 1.普通打印对象 """


class Human:
    def __init__(self, name):
        self.name = name


# 实例化对象
obj_1 = Human("Xiao_Ming")

# 打印对象,得到的是它的内存空间的地址
print(obj_1)

""" 2.使用__str__"改变"打印对象的效果 """


class Hero:
    def __init__(self, name):
        self.name = name

    def __str__(self):
        return "哈哈哈"


# 实例化对象
obj_2 = Hero("Peter")

# 打印对象,得到的是__str__的返回值
print(obj_2)

""" __ del__方法 """
# 通常,它是程序运行完之后,需要释放内存空间,才运行__del__方法。也就需要删除对象
# 除非,你在程序过程中调用了它,它就会执行

补充内容

# class People:
#     def __init__(self, name):
#         self.__name = name
#
#     def name(self):
#         return self.__name
#
#     name666 = property(name)
#
#
# obj = People('yexun')
# print(obj.name666)


# class People:
#     def __init__(self, name):
#         self.__name = name
#
#     @property
#     def name(self):
#         return self.__name
#
#
#
# obj = People('yexun')
# print(obj.name)

# class People:
#     def __init__(self, name):
#         self.__name = name
#
#     def get_name(self):
#         return self.__name
#
#     def set_name(self, name):
#         self.__name = name
#
#     def del_name(self):
#         print('del error')
#
#     name123 = property(get_name, set_name, del_name)
#
#
# obj = People('yexun')
# print(obj.name123)
# obj.name123 = '王强'
# print(obj.name123)
# del obj.name123


class People:
    def __init__(self, name):
        self.__name = name

    @property
    def name123(self):
        return self.__name

    @name123.setter
    def name123(self, name):
        self.__name = name

    @name123.deleter
    def name123(self):
        print('del error')


obj = People('yexun')
print(obj.name123)
obj.name123 = '王强'
print(obj.name123)
del obj.name123
# class People:
#     def __init__(self, name, age, sex):
#         self.name = name
#         self.age = age
#         self.sex = sex
#
#     def f1(self):
#         print(self.name)
#
#
# class Teacher(People):
#     def __init__(self, name, age, sex, level, salary):
#         People.__init__(self, name, age, sex)
#         self.level = level
#         self.salary = salary
#
#
# obj = Teacher('yexun', 18, 'male', 10, 3000)
# print(obj.__dict__)


class People:
    def __init__(self, name, age, sex):
        self.name = name
        self.age = age
        self.sex = sex

    def f1(self):
        print(self.name)


class Teacher(People):
    def __init__(self, name, age, sex, level, salary):
        # 在Python3 中直接写super().__init__...即可达到同样的效果
        super(Teacher, self).__init__(name, age, sex)
        self.level = level
        self.salary = salary


obj = Teacher('yexun', 18, 'male', 10, 3000)
print(obj.__dict__)

print(Teacher.mro())

print(isinstance(obj, Teacher))  # 判断对象是否为该类的实例

# '我爱你'.__repr__()   # 交互

造类

认识元类

"""造类"""

"""定制一个Human类"""

# 1 类名
class_name = 'Human'

# 2 基类
class_bases = (object,)

# 3 类子代码
class_dict = {}
class_body = """
def __init__(self, name, age):
    self.name = name
    self.age = age

def scan_age(self):
    print(self.name, "年龄:", self.age)
"""
exec(class_body, {}, class_dict)

# 4 调用元类
abc = type(class_name, class_bases, class_dict)  # 元类处理完毕后,会返回一个返回值---即Human类,但是你可以用 abc 或其他符号 接着这个类.
# 通过以上的步骤和代码,我们已经造好了一个类,这整个过程等价于我们平时用 class XXX 造的类


# 看看这个类名:
print(abc)  # abc 不是类,也不是类名, abc只是一个承接着----'类名为 Human 的 类' 的工具. 因此可以通过它调用Human类.
# 注意,也可将 abc 换成 Human,这样操作更方便,也更人性化.

# 通过这个自定义类,看看是否能够成功实例化对象

# 实例化:
person = abc('Xiao Ming', 18)
# 运行一下对象:
person.scan_age()

自定义元类

"""造类"""

"""
1.
class Human(Father) 等价于 class Human(Father, metaclass=type)
元类放到最后,Human类
最后面的参数 metaclass=type的意思是
默认使用内置的元类---"type"
"""

"""
2.
如果类定义了__call__方法,那么它的实例可以变为可调用对象
调用方式>>> 对象()   # 像函数一样
"""

"""
网络编程.
__new__方法先被调用,返回一个实例对象,接着 __init__ 被调用
__new__方法的返回值就是类的实例对象,
这个实例对象会传递给 __init__ 方法中定义的 self 参数,
以便实例对象可以被正确地初始化
 
如果 __new__ 方法不返回值(或者说返回 None)
那么 __init__ 将不会得到调用,这个也说得通,
因为实例对象都没创建出来,调用 init 也没什么意义

__init__方法负责对象的初始化,系统执行该方法前,
其实该对象已经存在了,要不然初始化什么东西呢?
"""

"""
4.
自定义一个类   ----> 使用 ----> 得到"初始化的对象"(可进一步使用对象的属性和方法)
自定义一个元类 ----> 使用 ----> 得到"初始化的类"
"""

"""
5.
class Myselftpye(type):

    # 一个能造"空对象"的新工厂(自己的__new__) == 底层的原始工厂(官方的__new__) + 自己添点东西
    def __new__(cls, *args, **kwargs):
        # Python 网络编程 可以使用直接使用 super().__new__ 代替 super(Class, self).__new__
        return super().__new__(cls, *args, **kwargs)

    # 将"空对象"进行初始化加工
    def __init__(self, name, bases, dic):
        if "_" in name:
            raise NameError("类名不能有下划线")
        if not dic.get('__doc__'):
            raise SyntaxError('定义类必须写注释')

    # 它的实例可以变为可调用对象:
    # 例如当self为Human时候,使用"Human()"就会执行下面的代码
    def __call__(self, *args, **kwargs):
        ...
"""

"""
下面这个自定义元类 Mytpye 是在"继承"了官方的元类 type 的基础上
对__call__这个方法进行了'个性化重造' 
"""


# 自定义元类
class Mytpye(type):

    # 它的实例可以变为可调用对象:
    # 例如当self为Human时候,使用"Human()"就会执行下面的代码
    def __call__(self, *args, **kwargs):  # (Human, XiaoMing, ?)
        cls_obj = self.__new__(self)  # cls_obj = Human.__new__(Human) "返回空对象赋值给cls_obj"
        self.__init__(cls_obj, *args, **kwargs)  # Human.__init__(空对象, XiaoMing, ?)为空对象进行初始化


# 创建一个Human类
class Human(object, metaclass=Mytpye):
    def __new__(cls, *args, **kwargs):  # (Human, ?, ?)
        obj = object.__new__(cls)  # object.__new__(Human) "返回一个空对象"
        return obj

    def __init__(self, name):
        self.name = name


# 实例化对象
obj_1 = Human("XiaoMing")

使用元类

"""造类"""

"""
查看当前对象的属性
print(obj.__dict__)

为了方便用户查看类中包含哪些属性,
Python 类提供了 __dict__ 属性。
需要注意的一点是,该属性可以用类名或者类的实例对象来调用,
用类名直接调用 __dict__,会输出该由类中所有类属性组成的字典;
而使用类的实例对象调用 __dict__,会输出由类中所有实例属性组成的字典。
"""


class Base(type):

    # class()将触发__call__()方法
    def __call__(self, *args, **kwargs):  # 参数(Human, ("Peter", 19), ?)
        obj = self.__new__(self)  # Human.__new__(Human) 返回值为"空对象"
        self.__init__(obj, *args, **kwargs)  # Human.__init__(空对象, ("Peter", 19), ?)

        # 改造开始
        dict_new = {}
        for key in obj.__dict__:
            dict_new[f"YX_{key}"] = obj.__dict__[key]
        obj.__dict__ = dict_new
        # 改造完成

        return obj  # class()--->[返回一个初始化好的对象]


class Human(object, metaclass=Base):

    def __new__(cls, *args, **kwargs):  # 参数(Human, ?, ?)
        obj = object.__new__(cls)  # 创建了空对象>>>object.__new__(Human)
        return obj

    def __init__(self, name, age):
        self.name = name
        self.age = age

    # 经过了"改造部分",对象的name属性变成了对象的YX_name属性,同理age属性变成了YX_age属性
    def info(self):
        print("姓名>>>%s\n年龄>>>%d" % (self.YX_name, self.YX_age))


# Human类的实例化:
person = Human("Peter", 220)

# 应用
print(person.__dict__)  # obj.__dict__以字典的形式展示"对象"的属性

person.info()  # 使用对象的info方法

print(Human.__dict__)  # class.__dict__以字典的形式展示"类"的属性

单例模式

前三种方法

"""
单例模式【实现方法有以下的6种】
1.模块
2.类装饰器
3.类绑定方法
4.__new__方法
5.元类
6.并发
"""

# 1.用模块实现
"""
A.创建一个新的Python文件
B.在这个文件里面写入以下代码:

class Human:
    def __init__(self, name, age):
        self.name = name
        self.age = age


obj = Human('Xiao Ming', 18)

3.在另一个Python文件中写入以下代码:

from settings import obj
from settings import obj
from settings import obj
# 不论导入多少次模块,都是同一个对象
# 即:实现了单例的模式
"""

# 2.类装饰器
from functools import wraps


def singleton_mode(cls):
    obj = None

    @wraps(cls)
    def wrapper(*args, **kwargs):
        nonlocal obj
        if not obj:
            obj = cls(*args, **kwargs)
        return obj

    return wrapper


@singleton_mode  # Human = singleton_mode(Human)
class Human:
    def __init__(self, name, age):
        self.name = name
        self.age = age


obj_1 = Human('Xiao Ming', 90)
print(obj_1.name123, obj_1.age)

obj_2 = Human('Zhang San', 20)
print(obj_2.name123, obj_2.age)

print(obj_2 is obj_1)

后三种方法

# """
# 单例模式【实现方法有以下的6种】
# 1.模块
# 2.类装饰器
# 3.类绑定方法
# 4.__new__方法
# 5.元类
# 6.并发
# """
#
#
# # 3.类绑定方法
# class Human:
#     obj_1 = None
#
#     def __init__(self, name, age):
#         self.name = name
#         self.age = age
#
#     @classmethod
#     def get_obj(cls, *args, **kwargs):
#         if not cls.obj:
#             cls.obj = cls(*args, **kwargs)
#         return cls.obj
#
#
# obj_1 = Human.get_obj('Xiao Ming', 90)
# obj_2 = Human.get_obj('Xiao Ming', 20)
# print(obj_2 is obj_1)
#
#
# # 4、__new__方法
# class Human:
#     obj_1 = None
#
#     def __init__(self, name, age):
#         self.name = name
#         self.age = age
#
#     def __new__(cls, *args, **kwargs):
#         if not cls.obj:
#             cls.obj = super().__new__(cls)  # 等价于 object.__new__(Human) 不信的话可以使用print(Human.__mro__)检验
#         return cls.obj
#
#
# obj_1 = Human('张大仙', 73)
# obj_2 = Human('张大仙', 75)
# print(obj_1)
# print(obj_2)
#
#
# # 5.元类方法
#
#
# class Mytpye(type):
#     obj_1 = None
#
#     def __call__(self, *args, **kwargs):
#         if not self.obj:
#             self.obj = self.__new__(self)
#         self.__init__(self.obj, *args, **kwargs)
#         return self.obj
#
#
# class Singleton(metaclass=Mytpye):
#     pass
#
#
# class Human(Singleton):
#
#     def __init__(self, name, age):
#         self.name = name
#         self.age = age
#
#
# obj_1 = Human('Xiao Ming', 20)
# print(obj_1.__dict__)
#
# obj_2 = Human('Zhang Tao', 66)
# print(obj_2.__dict__)
#
# print(obj_2 is obj_1)
若依框架整合Flowable:从零构建企业级流程中心 本文详细介绍了如何将若依框架与Flowable工作流引擎整合,构建企业级流程中心。通过环境配置、依赖添加、数据库设置等核心步骤,实现流程定义管理、任务处理服务等关键功能,并结合实际案例展示请假审批流程的实现与动态表单集成。文章还提供了性能优化和生产建议,帮助开发者高效构建稳定可靠的工作流系统。 阅读详情

相关推荐

HWSD中国土壤数据库

T_PH_H2O: Real (酸碱度) T_CEC_CLAY: Real (粘性层土壤的阳离子交换能力);T_CEC_SOIL: Real (土壤的阳离子交换能力) T_BS: Real (基本饱和度);T_CACO3: Real (碳酸盐或石灰含量) T_CASO4: Real (硫酸盐含量);ADD_PROP: Real (土壤单元中与农业用途有关的特定土壤类型);T_USDA_TEX: Real (USDA土壤质地分类);T_REF_BULK: Real (土壤容重);

地球资源数据云的官方博客 4651

basicPython-1

元组、列表、字典、集合、字符串、格式化输出、循环语句、生成式、异常处理

因为热爱,所以坚持。 833

ArcGIS Pro 拓扑编辑实战:从‘地图拓扑’到‘共享编辑’,手把手教你批量修改要素

本文详细介绍了ArcGIS Pro中的拓扑编辑功能,从地图拓扑配置到共享编辑技巧,手把手教你如何批量修改要素。通过实战案例展示拓扑编辑在城市规划、地籍管理等场景中的应用,显著提升编辑效率并减少拓扑错误,是现代GIS技术的重要生产力工具。

weixin_30500473的博客 505

basicPython-2

普通函数、生成器、迭代器、递归函数、匿名函数、装饰器、记忆函数

因为热爱,所以坚持。 515

科研绘图(二):R 语言实现小鼠脑图谱 3D 渲染,附完整代码与数据获取指南

在生物医学科研中,脑区的 3D 可视化是呈现实验结果、解析脑结构功能的重要手段。R 语言凭借rgl和Rvcg等工具包,可高效实现小鼠全脑及特定脑区(如 CA1 区)的立体渲染,且代码可复用性强。本文将从环境搭建、数据准备、代码实现到结果导出,手把手带你完成小鼠脑图谱 3D 绘图,小白也能快速上手!

good_rrrrr的博客 2023

yolov5深度剖析+源码debug级讲解系列(一) yolov5的架构和源码debug准备

前言 前段时间分析了yolov3的源码,这次想带着小伙伴一起把yolov5完全掌握。博主还是保持着一贯的风格,依旧采用debug级别的源码剖析。目的就是让大家可以通过一个系列的文章就把yolov5的架构、设计理念和每一行源码都弄懂。只要小伙伴可以花时间把这个系列读完,就会对yolov5的理解有所提升。 去年参加了kaggle的小麦检测比赛,yolov5在比赛的中段开始呈现霸榜趋势,超越了efficientdet。虽然最后yolov5因为权限等某些问题被kaggle官方禁用了,但是仍然体现出了其强大的能力。值

人唯优的博客 4万+

basicPython-4

文件操作、案例演示

因为热爱,所以坚持。 442

Easy系列PLC远程IO模块的安装配置和地址访问(EtherCAT总线)

EtherCAT分布式时钟DC(SOEM源码解析)EtherCAT分布式时钟DC(SOEM源码解析)_soem dc同步-优快云博客文章浏览阅读1.2k次。分布式时钟(DC,Dsitributed Clock)可以使所有 EtherCAT设备使用相同的系统时间,从而控制各设备任务的同步执行。_soem dc同步1200PLC连接分布式IO组态编程应用(ES200SP固件版本不同解决方法)

RXXW_Dor的博客 172

basicpython-6

自制模块、案例展示

因为热爱,所以坚持。 513

三模冗余、纠错编码、单粒子翻转防护

本文探讨了高可靠性FPGA系统设计的三大关键技术:三模冗余(TMR)、纠错编码(ECC)和单粒子翻转(SEU)防护。TMR通过三个并行模块和表决器实现容错,但会增加硬件资源和功耗;ECC利用汉明码等编码方式检测和纠正数据错误,适用于存储器保护;SEU防护则针对高能粒子引发的位翻转问题,采用配置刷新、TMR和ECC等方法。文章还通过Verilog代码示例展示了这些技术的实现,并提出了一个综合应用案例,结合三种技术构建高可靠性控制系统。这些技术在航空航天、医疗设备等关键领域具有重要应用价值。

2301_79143213的博客 715

知识图谱设计简记

知识图谱是一种语义化的知识表示框架,通过实体-关系-属性三元组形式表达现实世界关联。其核心价值在于关联化整合数据、支持可解释性推理和赋能智能化应用。知识图谱可分为通用型和领域型两类,基本构成包括实体、关系、属性等基础元素,以及本体和实例等架构层元素。设计方法主要有自上而下、自下而上和混合式三种,需遵循业务导向、一致性等原则。在建模时需要明确属性与实体的判断标准,规范处理关系的方向性与对称性,并合理构建多重关系。主流技术框架如RDF和属性图体系均支持多重关系建模,选择需考虑业务需求。本体作为知识图谱的概念骨架

生活在别处 357

basicPython-5

常用的模块 (module)

因为热爱,所以坚持。 701

matlab 受约束的 Delaunay 三角剖分【2025最新版】

matlab内置调用函数实现受约束的 Delaunay 三角剖分并将结果保存为STL文件

点云侠的博客 1875

Python Basic - Python格式化输出

目录功能解释代码示例常见格式化占位符 功能解释 一句话概括:数据更美观,更易懂 有时候需要将特定的数据,按照人更友好的格式进行输出,便于查看或存储,例如,需要指定输出某个人的信息,如,姓名,年龄,公司,部门,职位,工资等信息,按照特定的格式输出后更易读取。 代码示例 [root@Private python-script]# cat formatout.py #!/usr/local/bin/py...

HuangFei 188

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

AI全栈实战 | 3.9-01 爬虫入门:requests 加 BeautifulSoup 三分钟跑通,但 90% 的人栽在这 4 个“礼貌“问题上

⚠️:本文内容仅用于。请遵守目标站点的服务条款与相关法律法规,不得对目标服务造成负担,不得采集、传播个人隐私数据。技术是中性的,边界在你手里。爬虫的入门技术(requests 发请求 + BeautifulSoup 解析)三分钟就能学会。真正区分"会用爬虫"和"会做爬虫的人"的,是这篇我们跑通"请求→解析→存储"的最小闭环,然后重点把"合规与礼貌"这根弦给你绷上。

源码获取 | 运行部署 | 定制二开修改,如果回复不及时请耐心等待,请见谅。 399

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

从一段视频到可漫游的 4D 有声场景:思路拆解与最小复现手记

只需一段手机视频,你就能生成可"走进去"的 4D 有声场景:转头时狗叫声方向随之变化,走近时声音更清晰。本文拆解 Video-to-4DAVScene 的核心思路,手把手带你用几十行 Python 搭出最小管线,把视频中的运动物体变成带空间位置的声源,并附上三个真实踩坑的排障经验,代码可直接跑。🎧

helloagent的博客 232

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

Python+Agent入门笔记(二):列表推导式、模块和异常,这些写 Agent 前得会

接上一篇《Python+Agent入门笔记(一)》。基础语法跑通之后,这篇聊几块日常写脚本绕不开的东西。还是按 JS/Go 开发者的视角写,尽量记录我实际卡过的地方。

qq_41241612的博客 430

【每天一个 Python 小案例30】Python 基础知识综合小项目:我的工具盒

作为系列收官,本篇把前 29 篇的知识点合成一个能直接用的命令行工具"我的工具盒":计算器(用 ast 解析表达式,不碰 eval)、单位换算与温度转换(一张换算表 + 特例分支)、记账与分类统计(Decimal + JSON 持久化)、以及用"字典当命令表"把菜单和业务逻辑解耦的主循环。文中对比了 eval 的安全隐患与 ast 白名单的做法,解释了 lambda 闭包在字典里的写法与晚绑定陷阱,并在最后给出整个系列的知识地图,把变量、数据结构、控制流、函数、类、异常、文件、标准库八块内容对应到具体篇目。

xinjiyaya的博客 419

详解Python条件语句

在 Python 中,if...else 是一种条件语句,可以根据给定的条件执行不同的操作。这个语句通常用于控制程序的流程。

2601_96798737的博客 205

Python3 协程:异步编程的核心机制与实战

协程是解决I/O密集型任务等待瓶颈的高效机制,相比线程更轻量、无锁开销。从yield到async/await的演进,使异步编程语义清晰、易于理解。通过async/await可实现并发执行多个任务(如gather、create_task),显著提升网络请求、爬虫等场景性能。关键在于使用异步库(如aiohttp)替代同步库,避免阻塞事件循环。合理控制超时与并发数,才能发挥协程最大优势。

Lxn2zh的博客 159

python如何控制浏览器

Python 可以通过 Selenium、Playwright 等工具实现浏览器自动化,从打开网页到执行复杂交互操作均可脚本化完成。Selenium生态成熟

2601_96797912的博客 76

torch.compile 差异仅 1e-6,边界样本预测为何翻转

torch.compile 加速后输出与 eager 不一致,部分预测翻转。逐层对比与 graph break 分析定位到动态分支翻转根因。容差回归仅适用于无分支翻转场景,零容忍场景应禁用编译。

昨日种种,皆成今我。今日种种,皆成新我。 158

二进制木马免杀-Python 分离免杀与 Web 挂马

二进制木马免杀-Python 分离免杀与 Web 挂马

2503_94637398的博客 267

Python 100讲课程导航:第08篇《Python input 与类型转换:构建可靠的交互程序》

本文详解Python中input()的返回类型为字符串,强调必须通过int()、float()等函数进行类型转换。重点讲解了输入验证的重要性,结合try-except处理ValueError等异常,实现可靠的交互程序。通过购物预算计算器实战,演示如何防范非法输入、处理边界值,并推荐使用Decimal避免浮点精度问题,提升程序健壮性。

铭渊老黄 134

【Python】国家中小学智慧教育平台电子教材批量下载与 PDF 合成实战

成果:两本语文电子课本(一年级上册 118 页 / 23MB、三年级上册 130 页 / 30.3MB),合计 248 页、约 54MB,单本下载加合成 40~60 秒,PDF 页数校验全部通过。经验教训SPA 站点的数据接口优先从 bundle 里挖,比抓页面稳得多;资源链接要按 private/public 分组看待,只取平台公开部分;页数、目录名这类“可推断”的信息,永远用实际响应验证一次;受限环境里“能不能跑浏览器”要在方案定稿前确认。后续计划:这版 PDF 是图片版,没有文字层;

木头大左的博客 125

魔塔社区微调训练Qwen2-1.5B-Instruct模型并烧录到‌RK3568开发板教程

本文基于Ubuntu 22.04 + CUDA 13.0.3环境,使用LLaMA-Factory框架对Qwen2-1.5B-Instruct模型进行LoRA微调,训练儿童故事生成专用模型。通过配置qwen模板、制作alpaca格式数据集、执行sft训练并合并LoRA权重,最终将模型转换为GGUF格式,并量化为Q4_K_M以适配RK3568嵌入式平台。全程支持国产镜像加速下载与显存优化,实现高效轻量化部署。

浅清秋慕夏的博客 185
上一篇: basicPython-2
下一篇: basicPython-4
code_stream
博客等级 码龄4年 1238粉丝 169原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值