二、进阶语法

一、内置函数

1. range(start,end,step)

2. zip

  • 将多个集合中的元素,结合到一起
nation = ['CN', 'CN', 'US', 'US']
movies = ('斗鱼', '小红书', 'FaceBook', 'Google')
year = {'1992', '1995', '2004', '2010'}
# 多个集合中的数据转变为一个一一个对应的数据
# [('CN', '斗鱼', '1992'), ('CN', '小红书', '2004'), ('US', 'FaceBook', '1995'), ('US', 'Google', '2010')]
result = zip(nation, movies, year)
print(list(result))

3. sorted()

  • 排序
result = sorted([1, 0, 20, 12, -90], reverse=True)
print(result)

4. map()

  • 将一个可迭代的数据中的每个元素,用一个函数来处理
  • 函数:自定义函数以及内置函数
data = ['1', '2', '3', '4']
# 将一个可迭代的对象中的每一个元素,用函数(如int)来处理
# 得到一个新的迭代器
result = map(int, data)
print(list(result))

5. filter()

data = [1, 2, 3, 4, 5, 6, 7, 8, 9]


# 函数用 a_b来定义
def is_odd(number):
    if number % 2 == 0:
        return True
    else:
        return False


listData = filter(is_odd, data)
print(list(listData))

二、面向对象

1. 基本使用

  • self:代表当前对象,类似this
  • 对象中不包含self的形参,不能在外部调用
  • 魔术方法:在某种情况会自动触发
  • 析构方法:在对象销毁时候触发
class Person:
    age = 10
    # 需要构造器来做的,必须用none来赋值
    name = None
    address = None

    #  魔术方法: init: 变量初始化的时候会触发
    def __init__(self, name, address):
        self.name = name
        self.address = address
        print('person created')

    # 析构方法
    '''
    1. 对象没有其他方法引用时: 会触发
    2. 代码执行完后
    3. 通过del 手动删除一个对象的引用时
    '''
    def __del__(self):
        print('person is killed')

    # 成员方法:第一个参数为self,代表是当前对象的
    def sing(self):
        print('sing a song')

    def work(self):
        print('work hard')


person = Person('erick','xian')
person.sing()
print(person.age)

# 可以给对象加属性,加的属性可以通过del删除
# 删除的属性,必须是加上去的,而不能删除对象本来的属性
person.sex = 'male'
print(person.sex)
del person.sex

# 可以通过类来直接访问对象
print(Person.age)

# 获得当前对象所有属性:{'name': 'erick', 'address': 'xian'}
print(person.__dict__)

2. 权限修饰

class Person:
    age = 10
    # 需要构造器来做的,必须用none来赋值
    # 不带下划线:public
    name = None
    address = None
    # _: protected: 只是约定成俗,但是python其实并没有实现protected的属性
    # __: private
    _sex = None
    __time = None

    #  魔术方法: init: 变量初始化的时候会触发
    def __init__(self, name, address, sex, time):
        self.name = name
        self.address = address
        self._sex = sex
        self.__time = time
        print('person created')


ym = Person('erick', 'xian','male','1920')
# 获得当前对象所有属性:{'name': 'erick', 'address': 'xian'}
print(ym.__dict__)

3. 继承

  • 多继承:重名方法,继承的()中,先定义哪个父类,就用哪个
class Father:
    name = None
    age = None

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


class Son(Father):
    sex = None

    def __init__(self, name, age, sex):
        # 调用父类构造
        Father.__init__(self, name, age)
        self.sex = sex


son = Son('erick', 11, 'male')

print(son.sex)
print(son.name)

4. 多态

  • 就是接口模式

5. 接口

  • 依然用class关键字
# 接口
class Animal:
    def eat(self):
        pass


# 实现类
class Cat(Animal):
    def eat(self):
        print('猫吃鱼')


class Dog(Animal):
    def eat(self):
        print('狗吃屎')


cat = Cat()
cat.eat()

dog = Dog()
dog.eat()

6. 方法

  • 对象方法
  • 类方法
  • 绑定类方法
  • 静态方法
class Person:
    # 成员方法: 只能用对象调用
    def work(self):
        print('work hard')

    '''
    类方法:直接用类名调用:
     1. @classmethod: 装饰器
     2. 形参: 最好用cls,见名知意
     3. 可以用类对象和类本身调用
    '''

    @classmethod
    def play(cls):
        print('我是类方法')

    '''
    绑定类方法:
    1. 只能用类名来调用
    '''


    def sleep():
        print('我是绑定类方法')

    '''
    静态方法
    1. 可以用类名和对象调用
    '''
    @staticmethod
    def sing():
        print('静态方法')


person = Person()
person.work()
person.play()
person.sing()

Person.play()
Person.sleep()
Person.sing()

7. 魔术方法

针对类

class Person:
    name = None
    age = None

    """
    构造器:
     1. 用于创建对象
     2. 如果没有返回值,则创建失败
     3. 如果不写,系统会分配一个
    """

    def __new__(cls, *args, **kwargs):
        print('开始new')
        print(cls)
        print(args)  # ('erick', 20)
        print(kwargs)
        return object.__new__(cls)  # 必须要,不然对象创建失败

    '''
    init: 用于给成员变量赋值
    '''

    def __init__(self, name, age):
        print('开始初始化')
        self.name = name
        self.age = age

    def __del__(self):
        print('destroyed')

    '''
     java的toString方法
     1. 利用print打印对象时
     2. 利用str()转换对象时
    '''
    def __str__(self):
        return 'hello, I am toString'


person = Person('erick', 20)
print(person)

三、异常

  • try except
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值