• python day100-[day1-15]-1


    • 交换值
    x = 1
    y = 2
    x, y = y, x + y
    # x = 2, y = 3
    
    • 条件判断
    x = 1
    y = 2
    flag = Ture
    z =x if flag else y
    # z = 1
    
    • 第几天
    def is_leap_year(year):
        """
        判断指定的年份是不是闰年
    
        :param year: 年份
        :return: 闰年返回True平年返回False
        """
        return year % 4 == 0 and year % 100 != 0 or year % 400 == 0
    
    
    def which_day(year, month, date):
        """
        计算传入的日期是这一年的第几天
    
        :param year: 年
        :param month: 月
        :param date: 日
        :return: 第几天
        """
        days_of_month = [
            [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],
            [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
        ][is_leap_year(year)]
        total = 0
        for index in range(month - 1):
            total += days_of_month[index]
        return total + date
    
    
    • 生成式,生成器
    f = [x for x in range(1, 10)]
    print(f)
    f = [x + y for x in 'ABCDE' for y in '1234567']
    print(f)
    # 用列表的生成表达式语法创建列表容器
    # 用这种语法创建列表之后元素已经准备就绪所以需要耗费较多的内存空间
    f = [x ** 2 for x in range(1, 1000)]
    print(sys.getsizeof(f))  # 查看对象占用内存的字节数
    print(f)
    # 请注意下面的代码创建的不是一个列表而是一个生成器对象
    # 通过生成器可以获取到数据但它不占用额外的空间存储数据
    # 每次需要数据的时候就通过内部的运算得到数据(需要花费额外的时间)
    f = (x ** 2 for x in range(1, 1000))
    print(sys.getsizeof(f))  # 相比生成式生成器不占用存储数据的空间
    print(f)
    for val in f:
        print(val)
    
    
    

    除了上面提到的生成器语法,Python中还有另外一种定义生成器的方式,就是通过yield关键字将一个普通函数改造成生成器函数。下面的代码演示了如何实现一个生成斐波拉切数列的生成器。所谓斐波拉切数列可以通过下面递归的方法来进行定义:

    [{displaystyle F_{0}=0} ]

    [{displaystyle F_{1}=1} ]

    [{displaystyle F_{n}=F_{n-1}+F_{n-2}}({n}geq{2}) ]

    
    def fib(n):
        a, b = 0, 1
        for _ in range(n):
            a, b = b, a + b
            yield a
    
    
    def main():
        for val in fib(20):
            print(val)
    
    
    if __name__ == '__main__':
        main()
    
    
    • 类 @property装饰器
    class Person(object):
    
        def __init__(self, name, age):
            self._name = name
            self._age = age
    
        # 访问器 - getter方法
        @property
        def name(self):
            return self._name
    
        # 访问器 - getter方法
        @property
        def age(self):
            return self._age
    
        # 修改器 - setter方法
        @age.setter
        def age(self, age):
            self._age = age
    
        def play(self):
            if self._age <= 16:
                print('%s正在玩飞行棋.' % self._name)
            else:
                print('%s正在玩斗地主.' % self._name)
    
    
    def main():
        person = Person('王大锤', 12)
        person.play()
        person.age = 22
        person.play()
        # person.name = '白元芳'  # AttributeError: can't set attribute
    
    
    if __name__ == '__main__':
        main()
    
    • 类 __slots__魔法
    class Person(object):
    
        # 限定Person对象只能绑定_name, _age和_gender属性
        __slots__ = ('_name', '_age', '_gender')
    
        def __init__(self, name, age):
            self._name = name
            self._age = age
    
        @property
        def name(self):
            return self._name
    
        @property
        def age(self):
            return self._age
    
        @age.setter
        def age(self, age):
            self._age = age
    
        def play(self):
            if self._age <= 16:
                print('%s正在玩飞行棋.' % self._name)
            else:
                print('%s正在玩斗地主.' % self._name)
    
    
    def main():
        person = Person('王大锤', 22)
        person.play()
        person._gender = '男'
        # AttributeError: 'Person' object has no attribute '_is_gay'
        # person._is_gay = True
    
    • 类 @staticmethod @classmethod类方法??
    from time import time, localtime, sleep
    
    
    class Clock(object):
        """数字时钟"""
    
        def __init__(self, hour=0, minute=0, second=0):
            self._hour = hour
            self._minute = minute
            self._second = second
    
        @classmethod
        def now(cls):
            ctime = localtime(time())
            return cls(ctime.tm_hour, ctime.tm_min, ctime.tm_sec)
    
        def run(self):
            """走字"""
            self._second += 1
            if self._second == 60:
                self._second = 0
                self._minute += 1
                if self._minute == 60:
                    self._minute = 0
                    self._hour += 1
                    if self._hour == 24:
                        self._hour = 0
    
        def show(self):
            """显示时间"""
            return '%02d:%02d:%02d' % 
                   (self._hour, self._minute, self._second)
    
    
    def main():
        # 通过类方法创建对象并获取系统时间
        clock = Clock.now()
        while True:
            print(clock.show())
            sleep(1)
            clock.run()
    
    
    if __name__ == '__main__':
        main()
    
  • 相关阅读:
    如何在ONENET云端搭建IOT平台
    01_接口测试介绍
    10_fiddler_待整理
    09_fiddler_慢网络测试(限制网速)
    08_Fiddler_打断点(bpu)
    07_Fiddler_post提交到主体的四种参数形式
    06_Fiddler_get请求(url详解)
    05_Fiddler的Script 脚本用法
    04_Fiddler_Composer创建和发送HTTP Request
    03_Fiddler抓包的捕获设置
  • 原文地址:https://www.cnblogs.com/damahuhu/p/12302386.html
Copyright © 2020-2023  润新知