zoukankan      html  css  js  c++  java
  • 学习Py——自己模拟写的一个Range功能

     1 #!/usr/bin/env python
     2 # -*- coding:utf-8 -*-
     3 __author__ = "loki"
     4 
     5 # function: Modeled range
     6 from collections import Iterable, Iterator
     7 
     8 
     9 class Range:
    10     def __init__(self, start, stop, step=1):
    11         self.num = start
    12         self.stop = stop
    13         self.jump = step
    14 
    15     def __iter__(self):
    16         return self
    17 
    18     def __next__(self):
    19         if self.num >= self.stop:
    20             raise StopIteration
    21         n = self.num
    22         self.num += 1
    23         if self.jump > 1:  # step > 1
    24             n = n * self.jump
    25             if n <= self.stop:
    26                 return n
    27             else:
    28                 raise StopIteration
    29         return n  # default step
    30 
    31 
    32 f = Range(0, 12, 2)
    33 f1 = range(0, 12, 2)
    34 
    35 # print(isinstance(f, Iterable))
    36 # print(isinstance(f, Iterator))
    37 
    38 # for item in f:       <---这个地方把值取空了,自然获得的list的结果是空列表了 - -|||
    39 #     print(item)
    40 
    41 print(type(f))
    42 print(list(f))
    43 print('---------分割线-------------')
    44 print(type(f1))
    45 print(list(f1))
    46 
    47 print(dir(f))
    48 print(dir(f1))

    遗留问题:

    虽然,完成了 range(启始, 结束, 步进).但是,发现官方的range在执行list()的时候会直接生成列表。而我做的这个“山寨”好像就返回的是空列表。(已解决)

    原因就是,上面一个for循环把f的值取空了,下面在进行list...自然是空列表啦 。 哈 。 哈。 哈

  • 相关阅读:
    Postman生成随机数(4)
    Postman参数化(3)
    Postman主界面介绍(2)
    Postman安装与介绍(1)
    Scuba数据库漏洞扫描工具--安装与使用
    Jmeter(八)Linux上安装与使用
    Jmeter(七)生成测试报告(Windows)
    理解动态字符串SDS
    csp复习笔记?
    ORM
  • 原文地址:https://www.cnblogs.com/Cong0ks/p/9103456.html
Copyright © 2011-2022 走看看