爆款云主机2核4G限时秒杀,88元/年起!
查看详情

活动

天翼云最新优惠活动,涵盖免费试用,产品折扣等,助您降本增效!
热门活动
  • 618智算钜惠季 爆款云主机2核4G限时秒杀,88元/年起!
  • 免费体验DeepSeek,上天翼云息壤 NEW 新老用户均可免费体验2500万Tokens,限时两周
  • 云上钜惠 HOT 爆款云主机全场特惠,更有万元锦鲤券等你来领!
  • 算力套餐 HOT 让算力触手可及
  • 天翼云脑AOne NEW 连接、保护、办公,All-in-One!
  • 中小企业应用上云专场 产品组合下单即享折上9折起,助力企业快速上云
  • 息壤高校钜惠活动 NEW 天翼云息壤杯高校AI大赛,数款产品享受线上订购超值特惠
  • 天翼云电脑专场 HOT 移动办公新选择,爆款4核8G畅享1年3.5折起,快来抢购!
  • 天翼云奖励推广计划 加入成为云推官,推荐新用户注册下单得现金奖励
免费活动
  • 免费试用中心 HOT 多款云产品免费试用,快来开启云上之旅
  • 天翼云用户体验官 NEW 您的洞察,重塑科技边界

智算服务

打造统一的产品能力,实现算网调度、训练推理、技术架构、资源管理一体化智算服务
智算云(DeepSeek专区)
科研助手
  • 算力商城
  • 应用商城
  • 开发机
  • 并行计算
算力互联调度平台
  • 应用市场
  • 算力市场
  • 算力调度推荐
一站式智算服务平台
  • 模型广场
  • 体验中心
  • 服务接入
智算一体机
  • 智算一体机
大模型
  • DeepSeek-R1-昇腾版(671B)
  • DeepSeek-R1-英伟达版(671B)
  • DeepSeek-V3-昇腾版(671B)
  • DeepSeek-R1-Distill-Llama-70B
  • DeepSeek-R1-Distill-Qwen-32B
  • Qwen2-72B-Instruct
  • StableDiffusion-V2.1
  • TeleChat-12B

应用商城

天翼云精选行业优秀合作伙伴及千余款商品,提供一站式云上应用服务
进入甄选商城进入云市场创新解决方案
办公协同
  • WPS云文档
  • 安全邮箱
  • EMM手机管家
  • 智能商业平台
财务管理
  • 工资条
  • 税务风控云
企业应用
  • 翼信息化运维服务
  • 翼视频云归档解决方案
工业能源
  • 智慧工厂_生产流程管理解决方案
  • 智慧工地
建站工具
  • SSL证书
  • 新域名服务
网络工具
  • 翼云加速
灾备迁移
  • 云管家2.0
  • 翼备份
资源管理
  • 全栈混合云敏捷版(软件)
  • 全栈混合云敏捷版(一体机)
行业应用
  • 翼电子教室
  • 翼智慧显示一体化解决方案

合作伙伴

天翼云携手合作伙伴,共创云上生态,合作共赢
天翼云生态合作中心
  • 天翼云生态合作中心
天翼云渠道合作伙伴
  • 天翼云代理渠道合作伙伴
天翼云服务合作伙伴
  • 天翼云集成商交付能力认证
天翼云应用合作伙伴
  • 天翼云云市场合作伙伴
  • 天翼云甄选商城合作伙伴
天翼云技术合作伙伴
  • 天翼云OpenAPI中心
  • 天翼云EasyCoding平台
天翼云培训认证
  • 天翼云学堂
  • 天翼云市场商学院
天翼云合作计划
  • 云汇计划
天翼云东升计划
  • 适配中心
  • 东升计划
  • 适配互认证

开发者

开发者相关功能入口汇聚
技术社区
  • 专栏文章
  • 互动问答
  • 技术视频
资源与工具
  • OpenAPI中心
开放能力
  • EasyCoding敏捷开发平台
培训与认证
  • 天翼云学堂
  • 天翼云认证
魔乐社区
  • 魔乐社区

支持与服务

为您提供全方位支持与服务,全流程技术保障,助您轻松上云,安全无忧
文档与工具
  • 文档中心
  • 新手上云
  • 自助服务
  • OpenAPI中心
定价
  • 价格计算器
  • 定价策略
基础服务
  • 售前咨询
  • 在线支持
  • 在线支持
  • 工单服务
  • 建议与反馈
  • 用户体验官
  • 服务保障
  • 客户公告
  • 会员中心
增值服务
  • 红心服务
  • 首保服务
  • 客户支持计划
  • 专家技术服务
  • 备案管家

了解天翼云

天翼云秉承央企使命,致力于成为数字经济主力军,投身科技强国伟大事业,为用户提供安全、普惠云服务
品牌介绍
  • 关于天翼云
  • 智算云
  • 天翼云4.0
  • 新闻资讯
  • 天翼云APP
基础设施
  • 全球基础设施
  • 信任中心
最佳实践
  • 精选案例
  • 超级探访
  • 云杂志
  • 分析师和白皮书
  • 天翼云·创新直播间
市场活动
  • 2025智能云生态大会
  • 2024智算云生态大会
  • 2023云生态大会
  • 2022云生态大会
  • 天翼云中国行
天翼云
  • 活动
  • 智算服务
  • 产品
  • 解决方案
  • 应用商城
  • 合作伙伴
  • 开发者
  • 支持与服务
  • 了解天翼云
      • 文档
      • 控制中心
      • 备案
      • 管理中心

      31天Python入门——第20天:魔法方法详解

      首页 知识中心 软件开发 文章详情页

      31天Python入门——第20天:魔法方法详解

      2025-04-14 09:28:32 阅读次数:7

      Python,对象,方法,调用,迭代

       

      魔法方法

      1. __new__和__del__

      __new__ 是 Python 中的一个特殊魔法方法, 用于创建对象实例.它在对象实例被创建之前被调用, 通常用于控制对象的创建过程和自定义对象的创建方式.与之相对的是 __init__ 方法, 它在对象实例创建后进行初始化操作.

      __new__的注意点:

      1. 返回实例对象: __new__ 方法必须返回一个类的实例对象.通常情况下, 它会调用父类的 __new__ 方法来创建实例, 并返回实例对象.
      2. 第一个参数是类: __new__ 方法的第一个参数是类本身, 通常命名为 cls.在调用时, Python 会自动传递类作为第一个参数.
      3. 控制实例创建过程: __new__ 方法允许你控制实例的创建过程.你可以在这个方法中实现自定义的逻辑.
      class MyClass:
      	# 在__init__之前被调用
          def __new__(cls, name):
              print("__new__")
              obj = super().__new__(cls)
             return obj
      
          def __init__(self, name):
              print("__init__")
              self.name = name
      
      
      my_class = MyClass('张三')
      print(my_class.name)
              
      
      # __new__
      # __init__
      # 张三
      
      # __new__方法可以控制实例创建过程:
      # 单例模式 - 无论你实例化多少次, 始终都是同一个对象
      
      class Singleton:
      
          def __new__(cls, *args, **kwargs):
              obj = super().__new__(cls)
              return obj
      
          def __init__(self):
              pass
      
      
      single1 = Singleton()
      print(id(single1))
      single2 = Singleton()
      print(id(single2))
      
      # 140613070163824
      # 140613070163392
      
      # 很明显上面并没有实现单例模式, 那怎么实现单例模式呢?
      class Singleton:
      
          __instance = None
      
          def __new__(cls, *args, **kwargs):
              # 假如已经实例化过了, 就直接返回已经存在的对象
              if not cls.__instance:
                  cls.__instance = super().__new__(cls)
      
              return cls.__instance
      
          def __init__(self):
              pass
      
      
      single1 = Singleton()
      print(id(single1))
      single2 = Singleton()
      print(id(single2))
      
      # 140240883584880
      # 140240883584880
      

      __del__当对象被释放的时候, 会执行. 它通常用于执行一些资源释放或清理操作, 如关闭文件、释放网络连接等. 但是, 但并不保证一定会调用, 因为垃圾回收可能由不同的策略来管理. python中对象的释放是一个比较复杂的过程. 一个对象有可能在引用到0的时候被释放, 且这个释放是可能在任意一个地方发生.

      注意:

      __del__跟python中的关键字del是没有关系的.del并不一定会触发__del__

      class TestDel:
      
          def __init__(self):
              print("__init__")
      
          def __del__(self):
              print("__del__")
      
      
      test_del = TestDel()
      print()
      

      Python当中的垃圾回收可以查看网上比较优秀的文章.

      2. __repr__和__len__

      __repr__ 用于定义对象的字符串表示形式.

      __str__和__repr__都返回一个对象的字符串描述, 不过两者的用途不同, str可以理解是给人阅读的, 而repr是给程序使用的.

      print(obj)、str(obj)方法调用对象的str方法;交互式CLI、repr(obj)、gdb调试时查看对象值返回的是repr, 不过在多情况下程序员把str和repr设置为一样__str__ == __repr__.

      如果没有定义 __str__ 方法, 调用 print() 时会默认使用 __repr__ 方法.

      __len__: 用于定义对象的长度(大小).当你在一个对象上调用内置的 len() 函数时, Python 会查找该对象是否定义了 __len__ 方法, 如果有则调用该方法并返回长度值.

      class MyList:
      
          def __init__(self, items):
              self.items = items
      
          def __len__(self):
              return len(self.items)
      
      
      my_list = MyList('hello python')
      print(len(my_list))
      

      3. __enter__和__exit__

      上下文协议是一组特殊方法(__enter__和__exit__同时存在), 允许你创建可用于 with 语句的上下文管理器.使用上下文管理器可以在进入和退出代码块时执行特定操作, 如资源的分配和释放.Python 的上下文协议涉及两个主要的特殊方法:__enter__ 和 __exit__.

          __enter__(self)
      

      __enter__ 方法:

      • 在进入with语句代码块前被调用, 用于执行一些准备操作.
      • 可以返回一个值, 该值将被赋给 as 关键字之后的变量.
          __exit__(self, exc_type, exc_value, exc_traceback)
      

      __exit__ 方法:

      • 在退出with语句代码块时调用, 无论代码块是否发生异常.
      • 可以用于执行一些清理操作, 如资源的释放.
      • 如果代码块内没有异常发生, 参数为 None, None, None.如果有异常, 参数包含异常类型、异常实例和跟踪信息.
      • 如果 __exit__ 方法返回 True, 异常不会向上继续传播.返回 False 则异常会继续向上抛.

      上下文协议的使用案例:可以使用 with 语句来管理文件的打开和关闭, 确保文件资源在退出代码块时被正确释放.

      class FileHandler:
          # 一个实现了上下文协议的类
          def __init__(self):
              pass
      
          def __enter__(self):
              pass
      
          def __exit__(self, exc_type, exc_val, exc_tb):
              pass
          
      
      file_handler = FileHandler()
      with file_handler:
          print(11111111111)
      
      logger = logging.getLogger(__name__)
      
      class FileHandler:
          # 一个实现了上下文协议的类
          def __init__(self, file_name, mode, encoding='utf-8'):
              self.file_name = file_name
              self.mode = mode
              self.encoding = encoding
              self.file = None
      
          def __enter__(self):
              self.file = open(self.file_name, self.mode, encoding=self.encoding)
              return self.file
      
          def __exit__(self, exc_type, exc_val, exc_tb):
              if exc_type:
                  logger.error(f"出错: {exc_val}")
      
              if self.file:
                  print("文件正在关闭")
                  self.file.close()
              return True
      
      
      file_handler = FileHandler("test.py", "r")
      with file_handler as f:
          content = f.read()
          print(content)
      
      # 上下文协议的实现简化了异常捕获的代码, 让异常捕获的封装性更好
      try:
        file = open()
      except Exception:
        # 处理这个异常
        pass
      finally:
       	file.close()
      

      4. 可迭代对象和迭代器

      可迭代对象和迭代器是 Python 中用于遍历数据集合的概念.它们在很多情况下都用于实现数据的迭代操作, 如循环.

      可迭代对象(Iterable)

      可迭代对象是一种数据类型, 可以通过迭代获取其中的元素.

      在 Python 中, 任何实现了 __iter__() 方法的对象都被视为可迭代对象.常见的可迭代对象包括列表、元组、字典、集合、字符串等.

      可迭代对象的特点:

      • 可以使用 for 循环遍历元素.
      • 可以通过 iter() 函数将其转换为迭代器.
      class MyNumber:
      
          def __init__(self, numbers):
              self.numbers = numbers
      
          def __iter__(self):
              # __iter__()必须返回迭代器
              return iter(self.numbers)
      
      
      a_list = [1,2,3,4,5,6,7]
      my_numbers = MyNumber(a_list)
      
      print(isinstance(my_numbers, Iterable)) # True
      
      for num in my_numbers:
          print(num)
          
          
      # 如果没有实现__iter__()就会报错:
      class MyNumber:
      
          def __init__(self, numbers):
              self.numbers = numbers
      
      a_list = [1,2,3,4,5,6,7]
      my_numbers = MyNumber(a_list)
      
      print(isinstance(my_numbers, Iterable)) False
      
      for num in my_numbers:
          print(num)
      

      迭代器Iterator

      迭代器是一个实现了 __iter__() 和 __next__() 方法的对象.__iter__() 方法返回迭代器对象自身, 而 __next__() 方法返回迭代器的下一个元素, 如果没有元素了, 抛出 StopIteration 异常.

      迭代器的特点:

      • 可以使用 for 循环遍历元素, 也可以使用 next() 函数逐个获取元素.
      • 只能遍历一次, 遍历完成后就不能再次使用.

      总结:

      1. 可迭代对象是具有迭代性质的对象, 而迭代器是一个实现了迭代协议的对象.
      2. 可迭代对象可以通过 iter() 函数转换为迭代器.
      3. 迭代器是一种一次性的数据获取方式, 每次调用 next() 都会获取下一个元素.
      class MyNumbersIterator:
      
          def __init__(self):
              pass
      
          def __iter__(self):
              pass
      
          def __next__(self):
              pass
      
      
      my_numbers_iterator = MyNumbersIterator()
      print(isinstance(my_numbers_iterator, Iterable)) # True
      print(isinstance(my_numbers_iterator, Iterator)) # True
      
      
      # ----------------------------------------------------------------
      
      class MyNumbersIterator:
      
          def __init__(self, numbers):
              self.numbers = numbers
              self.index = 0
      
          def __iter__(self):
              # __iter__()必须返回迭代器
              return self
      
          def __next__(self):
              try:
                  num = self.numbers[self.index]
                  self.index += 1
              except IndexError:
                  raise StopIteration
              return num
      
      
      a_list = [1,2,3,4,5,6,7]
      my_numbers_iterator = MyNumbersIterator(a_list)
      print(isinstance(my_numbers_iterator, Iterable))
      print(isinstance(my_numbers_iterator, Iterator))
      
      

      5. 中括号[]数据操作

      __getitem__、__setitem__ 和 __delitem__ 用于自定义对象的索引访问和操作.它们在创建自定义的容器类时非常有用, 允许你实现类似字典或列表的行为.

      1. __getitem__(self, key):

        这个方法定义了使用索引访问对象时的行为.当你像 obj[key] 这样使用索引操作时, Python 会调用对象的 __getitem__ 方法, 并将索引 key 作为参数传递给这个方法.你可以在这个方法中实现对应的行为, 比如从内部数据结构中获取相应的值.

      2. __setitem__(self, key, value):

        这个方法定义了使用索引赋值操作时的行为.当你像 obj[key] = value 这样进行索引赋值操作时, Python 会调用对象的 __setitem__ 方法, 并将索引 key 和值 value 作为参数传递给这个方法.你可以在这个方法中实现对应的赋值行为.

      3. __delitem__(self, key):

        这个方法定义了使用 del obj[key] 进行索引删除操作时的行为.当你使用 del 删除索引时, Python 会调用对象的 __delitem__ 方法, 并将索引 key 作为参数传递给这个方法.你可以在这个方法中实现删除操作的逻辑.

      这些方法的使用可以使你的自定义类更具像内置容器类型(如字典和列表)的行为, 从而实现更灵活和符合预期的数据操作.

      # 补充知识:
      # 列表切片 返回的是  列表.
      # 元组切片 返回是是  元组.
      # print(my_numbers[1:3]) # 切片my_numbers[1:3]相当于slice(1,3,None)
      # s = slice(1, 3, None)
      
      from collections.abc import Iterable
      
      
      class MyNumbers:
          # 全部都是数字
      
          def __init__(self, numbers):
              self.numbers = numbers
      
          def __getitem__(self, item):
              if isinstance(item, slice):
                  # 如果进了判断, 就代表是在做切片, 则需要返回与原本数据类型一致的数据类型.
                  temp = self.numbers[item]
                  cls = type(self)
                  obj = cls(temp)
                  return obj
              else:
                  num = self.numbers[item]
                  return num
      
          def __setitem__(self, key, value):
              if isinstance(value, (int, float)):
                  self.numbers[key] = value
              else:
                  raise ValueError(f'{value}的值设置必须是数字类型.')
      
          def __str__(self):
              return f"{self.numbers}"
      
          def __len__(self):
              return len(self.numbers)
      
          def __contains__(self, item):
              return item in self.numbers
      
          def __delitem__(self, key):
              # 不允许为空, 起码要有一个元素.
              if len(self.numbers) > 1:
                  self.numbers.pop(key)
              else:
                  raise ValueError('序列起码要有一个元素')
      
      
      a_list = [1, 2, 3, 4, 5, 6]
      # a_dict = {'a': 1, 'b': 2, 'c': 3}
      my_numbers = MyNumbers(a_list)
      # my_numbers[0] = 8
      del my_numbers[0]
      del my_numbers[1]
      del my_numbers[2]
      del my_numbers[0]
      del my_numbers[0]
      del my_numbers[0]
      print(my_numbers)
      # print(2 in my_numbers)
      # print(type(my_numbers))
      # s = slice(1, 3, None)
      # print(type(a_list[s]))
      # 列表切片 返回的是  列表.
      # 元组切片 返回是是  元组.
      # print(my_numbers[1:3])
      # print(isinstance(my_numbers, Iterable))
      #
      # for num in my_numbers:
      #     print(num)
      
      

      6. __getattr__、__setattr__ 和 __delattr__

      __getattr__、__setattr__ 和 __delattr__ 是 Python 中的魔法方法, 用于自定义对象的属性访问和操作.它们允许你控制属性的获取、设置和删除行为, 从而实现自定义的属性操作逻辑.

      1. __getattr__(self, name):

        当你访问一个不存在的属性时, Python 会调用对象的 __getattr__ 方法, 并将属性名 name 作为参数传递给这个方法.你可以在这个方法中实现对应的行为, 比如返回一个默认值或者抛出异常.

      2. __setattr__(self, name, value):

        当你设置属性的值时, Python 会调用对象的 __setattr__ 方法, 并将属性名 name 和值 value 作为参数传递给这个方法.你可以在这个方法中实现对应的赋值行为, 比如进行值的验证或修改.

      3. __delattr__(self, name):

        当你删除属性时, Python 会调用对象的 __delattr__ 方法, 并将属性名 name 作为参数传递给这个方法.你可以在这个方法中实现删除属性的逻辑.

      这些方法的使用可以使你的自定义类的属性操作更具控制性和灵活性.

      class Person:
      
          def __init__(self, name, age, info):
              self.name = name
              self.age = age
              self.info = info
      
          def __getattr__(self, item):
              if item in self.info:
                  return self.info[item]
              else:
                  raise AttributeError(f'{self.__class__}没有{item}属性')
      
          def __setattr__(self, key, value):
              # print(f'__setattr__接收到的参数key的值是{key}, value的值是{value}')
              if key == 'age':
                  if 0 < value < 150:
                      super().__setattr__(key, value)
                  else:
                      raise AttributeError(f"{key}的值{value}设置不合法")
              super().__setattr__(key, value)
      
          def __delattr__(self, item):
              if item in ['name', 'age']:
                  raise AttributeError(f"{item!r}是基础属性, 不允许删除")
              super(Person, self).__delattr__(item)
      
      
      information = {
          'gender': "男",
          'height': 180,
          'hobby': "打篮球",
      }
      person = Person('张三', 20, information)
      person.age = 25
      del person.age
      print(person.name)
      print(person.age)
      print(person.gender)
      # print(person.height)
      # print(person.hobby)
      # print(person.aaa)
      
      

      7. 可调用的

      不仅 Python 函数是真正的可调用的, 任何 Python 对象都可以表现得像函数.为此, 只需实现魔法方法 __call__.

      __call__ 是 Python 中的一个特殊魔法方法, 用于使对象可以像函数一样被调用.当一个对象被调用时, Python 会检查对象是否定义了 __call__ 方法, 如果定义了, 就会调用该方法, 从而实现对象的可调用行为.

      这使得你可以将一个类的实例像函数一样使用, 提供更多的灵活性和自定义操作.

      from collections.abc import Callable
      
      class Add:
      
          def __call__(self, a, b):
              return a + b
      
      
      # def func():
      #     print(111)
      
      
      # add = Add()
      # res = add(1, 2)
      # print(res)
      # print(isinstance(func, Callable))
      # print(isinstance(test_call, Callable))
      
      # 类装饰器.
      
      # 创建一个装饰器函数,使被装饰的函数只能在特定的时间段内执行。
      # 在早上9点 -> 晚上6点之间, 可以调用, 其余时间不允许调用.
      import datetime
      
      
      def time_limited(start, end):
      
          def outer(func):
              def inner(*args, **kwargs):
                  now = datetime.datetime.now().time()
                  if start < now < end:
                      result = func(*args, **kwargs)
                      return result
                  else:
                      print(f"对不起, 该时间段无法调用此接口.")
              return inner
          return outer
      
      
      class TimeLimit:
      
          def __init__(self, start, end):
              self.start = start
              self.end = end
      
          def __call__(self, f):
      
              def inner(*args, **kwargs):
                  now = datetime.datetime.now().time()
                  if self.start < now < self.end:
                      result = f(*args, **kwargs)
                      return result
                  else:
                      print(f"对不起, 该时间段无法调用此接口.")
              return inner
      
      
      # @time_limited(start=datetime.time(9, 0), end=datetime.time(18, 0))
      @TimeLimit(start=datetime.time(9, 0), end=datetime.time(18, 0))
      def ceshi():
          print('我只能在特定的时间段内执行.')
      
      
      if __name__ == '__main__':
          ceshi()
      
      

      8. 运算符

      运算符魔法方法是用于实现对象之间的比较和关系运算的.它们允许你定义自定义的比较操作, 使你的对象可以像内置类型一样进行大小比较、相等性检查等操作.

      下面是一些常用的运算符类型的魔法方法及其解释:

      • __lt__(self, other): 小于运算符 < 的魔法方法.定义对象小于另一个对象时的行为.
      • __le__(self, other): 小于等于运算符 <= 的魔法方法.定义对象小于等于另一个对象时的行为.
      • __eq__(self, other): 等于运算符 == 的魔法方法.定义对象相等时的行为.
      • __ne__(self, other): 不等于运算符 != 的魔法方法.定义对象不等于另一个对象时的行为.
      • __gt__(self, other): 大于运算符 > 的魔法方法.定义对象大于另一个对象时的行为.
      • __ge__(self, other): 大于等于运算符 >= 的魔法方法.定义对象大于等于另一个对象时的行为.
      import random
      
      
      class IntNumber:
      
          def __init__(self):
              self.value = random.randint(1, 10000)
      
          def __str__(self):
              return f"{self.value}"
      
          def __gt__(self, other):
              return self.value > other.value
      
          def __eq__(self, other):
              return self.value == other.value
      
          def __add__(self, other):
              return self.value + other.value
      
      
      class FloatNumber:
      
          def __init__(self):
              self.value = random.uniform(1, 10000)
      
          def __str__(self):
              return f"{self.value}"
      
          def __lt__(self, other):
              return self.value < other.value
      
      
      int_number = IntNumber()
      int_number2 = IntNumber()
      print(int_number + int_number2)
      # float_number = FloatNumber()
      # print(int_number)
      # print(int_number2)
      # print(float_number)
      # print(int_number2 != int_number)
      # print(int_number is float_number)
      
      
      class Date:
      
          def __init__(self, year, month, day):
              self.year = year
              self.month = month
              self.day = day
      
          def __gt__(self, other):
              if self.year > other.year:
                  return True
              if self.year == other.year:
                  if self.month > other.month:
                      return True
                  elif self.month == other.month:
                      return self.day > other.day
                  else:
                      return False
              if self.year < other.year:
                  return False
      
          def __eq__(self, other):
              return self.year == other.year and self.month == other.month and self.day == other.day
      
      
      # date1 = Date(2022, 7, 15)
      # date2 = Date(2022, 7, 15)
      #
      # print(date1 == date2)
      
      
      版权声明:本文内容来自第三方投稿或授权转载,原文地址:https://bit-runout.blog.csdn.net/article/details/146884961,作者:安然无虞,版权归原作者所有。本网站转在其作品的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如因作品内容、版权等问题需要同本网站联系,请发邮件至ctyunbbs@chinatelecom.cn沟通。

      上一篇:【C++11】lambda表达式

      下一篇:用go语言,给定一个只包含正整数且下标从0开始的数组nums。

      相关文章

      2025-05-19 09:04:44

      js小题2:构造函数介绍与普通函数对比

      js小题2:构造函数介绍与普通函数对比

      2025-05-19 09:04:44
      new , 关键字 , 函数 , 对象 , 构造函数
      2025-05-19 09:04:22

      外设驱动库开发笔记54:外设库驱动设计改进的思考

      外设驱动库开发笔记54:外设库驱动设计改进的思考

      2025-05-19 09:04:22
      使用 , 函数 , 初始化 , 定义 , 对象
      2025-05-19 09:04:22

      外设驱动库开发笔记46:MAX31855热偶变送器驱动

      外设驱动库开发笔记46:MAX31855热偶变送器驱动

      2025-05-19 09:04:22
      对象 , 温度
      2025-05-16 09:15:24

      jQuery遍历对象、数组、集合

      jQuery遍历对象、数组、集合

      2025-05-16 09:15:24
      jQuery , 对象 , 数组 , 遍历 , 集合
      2025-05-14 10:33:31

      计算机初级选手的成长历程——操作符详解(2)

      计算机初级选手的成长历程——操作符详解(2)

      2025-05-14 10:33:31
      对象 , 操作 , 操作符 , 表达式 , 运算 , 逗号 , 逻辑
      2025-05-14 10:33:31

      计算机小白的成长历程——习题演练(函数篇)

      计算机小白的成长历程——习题演练(函数篇)

      2025-05-14 10:33:31
      函数 , 字符串 , 数组 , 知识点 , 编写 , 迭代 , 递归
      2025-05-14 10:33:16

      30天拿下Rust之切片

      在Rust中,切片是一种非常重要的引用类型。它允许你安全地引用一段连续内存中的数据,而不需要拥有这些数据的所有权。切片不包含分配的内存空间,它仅仅是一个指向数据开始位置和长度的数据结构。

      2025-05-14 10:33:16
      amp , end , 切片 , 字符串 , 引用 , 索引 , 迭代
      2025-05-14 10:33:16

      30天拿下Python之使用Json

      Json的英文全称为JavaScript Object Notation,中文为JavaScript对象表示法,是一种存储和交换文本信息的语法,类似XML。Json作为轻量级的文本数据交换格式,比XML更小、更快,更易解析,也更易于阅读和编写。

      2025-05-14 10:33:16
      json , Json , Python , 字符串 , 对象 , 序列化 , 转换
      2025-05-14 10:33:16

      30天拿下Rust之字符串

      在Rust中,字符串是一种非常重要的数据类型,用于处理文本数据。Rust的字符串是以UTF-8编码的字节序列,主要有两种类型:&str和String。其中,&str是一个对字符数据的不可变引用,更像是对现有字符串数据的“视图”,而String则是一个独立、可变更的字符串实体。

      2025-05-14 10:33:16
      amp , Rust , str , String , 使用 , 字符串 , 方法
      2025-05-14 10:33:16

      30天拿下Rust之向量

      在Rust语言中,向量(Vector)是一种动态数组类型,可以存储相同类型的元素,并且可以在运行时改变大小。向量是Rust标准库中的一部分,位于std::vec模块中。

      2025-05-14 10:33:16
      Rust , 使用 , 元素 , 向量 , 方法 , 索引 , 迭代
      查看更多
      推荐标签

      作者介绍

      天翼云小翼
      天翼云用户

      文章

      33561

      阅读量

      5250960

      查看更多

      最新文章

      外设驱动库开发笔记54:外设库驱动设计改进的思考

      2025-05-19 09:04:22

      外设驱动库开发笔记46:MAX31855热偶变送器驱动

      2025-05-19 09:04:22

      30天拿下Python之使用Json

      2025-05-14 10:33:16

      30天拿下Rust之向量

      2025-05-14 10:33:16

      30天拿下Python之文件操作

      2025-05-14 10:33:16

      30天拿下Python之迭代器和生成器

      2025-05-14 10:07:38

      查看更多

      热门文章

      Python标准输入输出

      2023-04-18 14:15:05

      Python:matplotlib分组Bar柱状图

      2024-09-25 10:15:01

      刷题——Python篇(2)类型转换

      2023-02-13 07:58:38

      游戏编程之十一 图像页CPICPAGE介绍

      2022-11-28 01:25:04

      Python Pandas将多个dataframe写入Excel文件

      2023-04-21 03:11:35

      Python 函数调用父类详解

      2023-04-23 09:44:31

      查看更多

      热门标签

      java Java python 编程开发 代码 开发语言 算法 线程 Python html 数组 C++ 元素 javascript c++
      查看更多

      相关产品

      弹性云主机

      随时自助获取、弹性伸缩的云服务器资源

      天翼云电脑(公众版)

      便捷、安全、高效的云电脑服务

      对象存储

      高品质、低成本的云上存储服务

      云硬盘

      为云上计算资源提供持久性块存储

      查看更多

      随机文章

      【设计模式】工厂方法模式——工厂方法模式在JDK源码中的应用

      你不知道的Python的输入输出

      Python:matplotlib绘制柱状图Bar

      Java多态基础

      【Python】系列之判断和循环

      面向对象-------》ArrayList和LinkedList

      • 7*24小时售后
      • 无忧退款
      • 免费备案
      • 专家服务
      售前咨询热线
      400-810-9889转1
      关注天翼云
      • 旗舰店
      • 天翼云APP
      • 天翼云微信公众号
      服务与支持
      • 备案中心
      • 售前咨询
      • 智能客服
      • 自助服务
      • 工单管理
      • 客户公告
      • 涉诈举报
      账户管理
      • 管理中心
      • 订单管理
      • 余额管理
      • 发票管理
      • 充值汇款
      • 续费管理
      快速入口
      • 天翼云旗舰店
      • 文档中心
      • 最新活动
      • 免费试用
      • 信任中心
      • 天翼云学堂
      云网生态
      • 甄选商城
      • 渠道合作
      • 云市场合作
      了解天翼云
      • 关于天翼云
      • 天翼云APP
      • 服务案例
      • 新闻资讯
      • 联系我们
      热门产品
      • 云电脑
      • 弹性云主机
      • 云电脑政企版
      • 天翼云手机
      • 云数据库
      • 对象存储
      • 云硬盘
      • Web应用防火墙
      • 服务器安全卫士
      • CDN加速
      热门推荐
      • 云服务备份
      • 边缘安全加速平台
      • 全站加速
      • 安全加速
      • 云服务器
      • 云主机
      • 智能边缘云
      • 应用编排服务
      • 微服务引擎
      • 共享流量包
      更多推荐
      • web应用防火墙
      • 密钥管理
      • 等保咨询
      • 安全专区
      • 应用运维管理
      • 云日志服务
      • 文档数据库服务
      • 云搜索服务
      • 数据湖探索
      • 数据仓库服务
      友情链接
      • 中国电信集团
      • 189邮箱
      • 天翼企业云盘
      • 天翼云盘
      ©2025 天翼云科技有限公司版权所有 增值电信业务经营许可证A2.B1.B2-20090001
      公司地址:北京市东城区青龙胡同甲1号、3号2幢2层205-32室
      • 用户协议
      • 隐私政策
      • 个人信息保护
      • 法律声明
      备案 京公网安备11010802043424号 京ICP备 2021034386号