赞
踩
自己看的视频网址:【深度学习保姆级教学】草履虫都能看懂!理论到实战、入门到起飞!人工智能基础入门必看!【ML机器学习|DL深度学习|CV计算机视觉|NLP自然语言处理】_哔哩哔哩_bilibili
机器学习流程
深度学习解决了怎么提取特征?
python入门知识
来判断对象类型,使用type()函数
lambda argument_list: expression(lambda x, y: x*y;函数输入是x和y,输出是它们的积x*y)
有没有既能检查参数,又可以用类似属性这样简单的方式来访问类的变量呢?对于追求完美的Python程序员来说,这是必须要做到的!
Python内置的@property
装饰器就是负责把一个方法变成属性调用的:
- class Student(object):
-
- @property
- def score(self):
- return self._score
-
- @score.setter
- def score(self, value):
- if not isinstance(value, int):
- raise ValueError('score must be an integer!')
- if value < 0 or value > 100:
- raise ValueError('score must between 0 ~ 100!')
- self._score = value
还可以定义只读属性,只定义getter方法,不定义setter方法就是一个只读属性:
MixIN的目的就是给一个类增加多个功能,这样,在设计类的时候,我们优先考虑通过多重继承来组合多个MIxIn的功能,而不是设计多层次的复杂的继承关系
- class Dog(Mammal, RunnableMixIn, CarnivorousMixIn):
- pass
- >>> class Student(object):
- ... def __init__(self, name):
- ... self.name = name
- ... def __str__(self):
- ... return 'Student object (name: %s)' % self.name
- ...
- >>> print(Student('Michael'))
- Student object (name: Michael)
这样打印出来的实例,不但好看而且容易看出实例内部重要的数据。
如果直接敲变量不用print,会直接调用的是__repo__(),而不是__str__()。解决办法如下
- class Student(object):
- def __init__(self, name):
- self.name = name
- def __str__(self):
- return 'Student object (name=%s)' % self.name
- __repr__ = __str__
如果一个类想被用于
for ... in
循环,类似list或tuple那样,就必须实现一个__iter__()
方法,该方法返回一个迭代对象,然后,Python的for循环就会不断调用该迭代对象的__next__()
方法拿到循环的下一个值,直到遇到StopIteration
错误时退出循环。
- #我们以斐波那契数列为例,写一个Fib类,可以作用于for循环:
-
- class Fib(object):
- def __init__(self):
- self.a, self.b = 0, 1 # 初始化两个计数器a,b
-
- def __iter__(self):
- return self # 实例本身就是迭代对象,故返回自己
-
- def __next__(self):
- self.a, self.b = self.b, self.a + self.b # 计算下一个值
- if self.a > 100000: # 退出循环的条件
- raise StopIteration()
- return self.a # 返回下一个值
要表现得像list那样按照下标取出元素,需要实现__getitem__()
方法:
- class Fib(object):
- def __getitem__(self, n):
- a, b = 1, 1
- for x in range(n):
- a, b = b, a + b
- return a
- >>> f = Fib()
- >>> f[0]
- 1
- >>> f[1]
- 1
- >>> f[2]
- 2
- >>> f[3]
- 3
- >>> f[10]
- 89
- >>> f[100]
- 573147844013817084101

当我们需要定义常量时,一个办法是用大写变量通过整数来定义
但这样仍然是变量
更好的方法是为这样的枚举类型定义一个class类型,然后,每个常量都是class的一个唯一实例。Python提供了Enum
类来实现这个功能:
- from enum import Enum
-
- Month = Enum('Month', ('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'))
这样我们就获得了Month
类型的枚举类,可以直接使用Month.Jan
来引用一个常量,或者枚举它的所有成员:
- for name, member in Month.__members__.items():
- print(name, '=>', member, ',', member.value)
value属性默认从1自动开始计数
- from enum import Enum, unique
-
- @unique
- class Weekday(Enum):
- Sun = 0 # Sun的value被设定为0
- Mon = 1
- Tue = 2
- Wed = 3
- Thu = 4
- Fri = 5
- Sat = 6
type可以查看一个类型或变量的类型,也可以创建出新的类型
要创建一个class对象,type()函数要依次传入3个参数
fn
绑定到方法名hello
上- >>> def fn(self, name='world'): # 先定义函数
- ... print('Hello, %s.' % name)
- ...
- >>> Hello = type('Hello', (object,), dict(hello=fn)) # 创建Hello class
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。