• 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()
    
  • 相关阅读:
    Java自动化测试-02.编写第一个Java程序
    Java自动化测试-01.环境准备(JDK/环境变量/Intellij IDEA安装)
    eNSP 40报错(Virtualbox 0x80070005)现象与解决
    DDD初步认知
    微服务后业务系统围绕CAP的业务方案设计思考
    关于热点key读的一点思考
    Java并发——一些提高性能的方式
    Java并发——Synchronized
    dubbo学习(六)服务发布&引用
    dubbo学习(五)路由
  • 原文地址:https://www.cnblogs.com/damahuhu/p/12302386.html
Copyright © 2020-2023  润新知