深圳品牌策划设计,seo思维,网站建设兰州,做面条的网站【十三】Python中assert的作用#xff1f;
Python中assert#xff08;断言#xff09;用于判断一个表达式#xff0c;在表达式条件为 f a l s e false false的时候触发异常。
断言可以在条件不满足程序运行的情况下直接返回错误#xff0c;而不必等待程序运行后出现崩溃…【十三】Python中assert的作用
Python中assert断言用于判断一个表达式在表达式条件为 f a l s e false false的时候触发异常。
断言可以在条件不满足程序运行的情况下直接返回错误而不必等待程序运行后出现崩溃的情况。
Rocky直接举一些例子 assert True assert False
Traceback (most recent call last):File stdin, line 1, in module
AssertionErrorassert 1 1assert 1 2
Traceback (most recent call last):File stdin, line 1, in module
AssertionErrorassert 1 ! 2【十四】Python中互换变量有不用创建临时变量的方法吗
在Python中当我们想要互换两个变量的值或将列表中的两个值交换时我们可以使用如下的格式进行不需要创建临时变量
x, y y, x这么做的原理是什么呢
首先一般情况下Python是从左到右解析一个语句的但在赋值操作的时候因为是右值具有更高的计算优先级所以需要从右向左解析。
对于上面的代码它的执行顺序如下
先计算右值 y , x y , x y,x(这里是简单的原值但可能会有表达式或者函数调用的计算过程) 在内存中创建元组(tuple)存储 y , x y, x y,x分别对应的值计算左边的标识符元组被分别分配给左值通过解包(unpacking)元组中第一个标示符对应的值 ( y ) (y) (y)分配给左边第一个标示符 ( x ) (x) (x)元组中第二个标示符对应的值 ( x ) (x) (x)分配给左边第二个标示符 ( y ) (y) (y)完成了 x x x和 y y y的值交换。
【十五】Python中的主要数据结构都有哪些
列表list元组tuple字典dict集合set
【十六】Python中的可变对象和不可变对象
可变对象与不可变对象的区别在于对象本身是否可变。
可变对象list列表 dict字典 set集合
不可变对象tuple元组 string字符串 int整型 float浮点型 bool布尔型
【十七】Python中的None代表什么
None是一个特殊的常量表示空值其和False0以及空字符串不同它是一个特殊Python对象, None的类型是NoneType。
None和任何其他的数据类型比较返回False。 None 0
FalseNone
FalseNone None
TrueNone False
False我们可以将None复制给任何变量也可以给None赋值。
【十八】Python中 ∗ a r g s *args ∗args和 ∗ ∗ k w a r g s **kwargs ∗∗kwargs的区别 ∗ a r g s *args ∗args和 ∗ ∗ k w a r g s **kwargs ∗∗kwargs主要用于函数定义。我们可以将不定数量的参数传递给一个函数。
这里的不定的意思是预先并不知道函数使用者会传递多少个参数, 所以在这个场景下使用这两个关键字。 ∗ a r g s *args ∗args ∗ a r g s *args ∗args是用来发送一个非键值对的可变数量的参数列表给一个函数。
我们直接看一个例子
def test_var_args(f_arg, *argv):print(first normal arg:, f_arg)for arg in argv:print(another arg through *argv:, arg)test_var_args(hello, python, ddd, test)-----------------结果如下-----------------------
first normal arg: hello
another arg through *argv: python
another arg through *argv: ddd
another arg through *argv: test∗ ∗ k w a r g s **kwargs ∗∗kwargs ∗ ∗ k w a r g s **kwargs ∗∗kwargs允许我们将不定长度的键值对, 作为参数传递给一个函数。如果我们想要在一个函数里处理带名字的参数, 我们可以使用 ∗ ∗ k w a r g s **kwargs ∗∗kwargs。
我们同样举一个例子
def greet_me(**kwargs):for key, value in kwargs.items():print({0} {1}.format(key, value))greet_me(nameyasoob)-----------结果如下-------------
name yasoob【十九】Python中Numpy的broadcasting机制
Python的Numpy库是一个非常实用的数学计算库其broadcasting机制给我们的矩阵运算带来了极大地方便。
我们先看下面的一个例子 import numpy as npa np.array([1,2,3])a
array([1, 2, 3])b np.array([6,6,6])b
array([6, 6, 6])c a bc
array([7, 8, 9])上面的代码其实就是把数组 a a a和数组 b b b中同样位置的每对元素相加。这里 a a a和 b b b是相同长度的数组。
如果两个数组的长度不一致这时候broadcasting就可以发挥作用了。
比如下面的代码 d a 5d
array([6, 7, 8])broadcasting会把 5 5 5扩展成 [ 5 , 5 , 5 ] [5,5,5] [5,5,5]然后上面的代码就变成了对两个同样长度的数组相加。示意图如下broadcasting不会分配额外的内存来存取被复制的数据这里只是方面描述 我们接下来看看多维数组的情况 e
array([[1., 1., 1.],[1., 1., 1.],[1., 1., 1.]])e a
array([[2., 3., 4.],[2., 3., 4.],[2., 3., 4.]])在这里一维数组被扩展成了二维数组和 e e e的尺寸相同。示意图如下所示 我们再来看一个需要对两个数组都做broadcasting的例子 b np.arange(3).reshape((3,1))b
array([[0],[1],[2]])b a
array([[1, 2, 3],[2, 3, 4],[3, 4, 5]])在这里 a a a和 b b b都被扩展成相同的尺寸的二维数组。示意图如下所示 总结broadcasting的一些规则
如果两个数组维数不相等维数较低的数组的shape进行填充直到和高维数组的维数匹配。如果两个数组维数相同但某些维度的长度不同那么长度为1的维度会被扩展和另一数组的同维度的长度匹配。如果两个数组维数相同但有任一维度的长度不同且不为1则报错。 a np.arange(3)a
array([0, 1, 2])b np.ones((2,3))b
array([[1., 1., 1.],[1., 1., 1.]])a.shape
(3,)a b
array([[1., 2., 3.],[1., 2., 3.]])接下来我们看看报错的例子 a np.arange(3)a
array([0, 1, 2])b np.ones((3,2))b
array([[1., 1.],[1., 1.],[1., 1.]])a b
Traceback (most recent call last):File stdin, line 1, in module
ValueError: operands could not be broadcast together with shapes (3,) (3,2)【二十】Python中的实例方法、静态方法和类方法三者区别
不用classmethod和staticmethod修饰的方法为实例方法。在类中定义的方法默认都是实例方法。实例方法最大的特点是它至少要包含一个self参数用于绑定调用此方法的实例对象实例方法通常可以用类对象直接调用。
采用classmethod修饰的方法为类方法。类方法和实例方法相似它至少也要包含一个参数只不过类方法中通常将其命名为clsPython会自动将类本身绑定给cls参数。我们在调用类方法时无需显式为cls参数传参。
采用staticmethod修饰的方法为静态方法。静态方法没有类似self、cls这样的特殊参数因此Python的解释器不会对它包含的参数做任何类或对象的绑定。也正因为如此类的静态方法中无法调用任何类属性和类方法。
【二十一】Python中常见的切片操作
[:n]代表列表中的第一项到第n项。我们看一个例子
example [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]print(example[:6])---------结果---------
[1, 2, 3, 4, 5, 6][n:]代表列表中第n1项到最后一项
example [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]print(example[6:])---------结果---------
[7, 8, 9, 10][-1]代表取列表的最后一个元素
example [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]print(example[-1])---------结果---------
10[:-1]代表取除了最后一个元素的所有元素
example [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]print(example[:-1])---------结果---------
[1, 2, 3, 4, 5, 6, 7, 8, 9][::-1]代表取整个列表的相反列表
example [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]print(example[::-1])---------结果---------
[10, 9, 8, 7, 6, 5, 4, 3, 2, 1][1:]代表从第二个元素意指读取到最后一个元素
example [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]print(example[1:])---------结果---------
[2, 3, 4, 5, 6, 7, 8, 9, 10][4::-1]代表取下标为4即第五个元素的元素和之前的元素反转读取
example [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]print(example[4::-1])---------结果---------
[5, 4, 3, 2, 1]【二十二】Python中如何进行异常处理
一般情况下在Python无法正常处理程序时就会发生一个异常。异常在Python中是一个对象表示一个错误。当Python脚本发生异常时我们需要捕获处理它否则程序会终止执行。
捕捉异常可以使用tryexcept和finally语句。
try和except语句用来检测try语句块中的错误从而让except语句捕获异常信息并处理。
try:6688 / 0
except:异常的父类可以捕获所有的异常print 0不能被除
else:保护不抛出异常的代码print 没有异常
finally:print 最后总是要执行我【二十三】Python中removedel以及pop之间的区别
removedel以及pop都可以用于删除列表、字符串等里面的元素但是具体用法并不相同。
remove是剔除第一个匹配的值。del是通过索引来删除当中的元素。pop是通过索引来删除当中的元素并且返回该元素若括号内不添加索引值则默认删除最后一个元素。 a [0, 1, 2, 1, 3] a.remove(1) a
[0, 2, 1, 3] a [0, 1, 2, 1, 3] del a[1]
[0, 2, 1, 3] a [0, 1, 2, 1, 3] a.pop(1)
1 a
[0, 2, 1, 3] 文末推荐 内容介绍 《机器学习平台架构实战》详细阐述了与机器学习平台架构相关的基本解决方案主要包括机器学习和机器学习解决方案架构机器学习的业务用例机器学习算法机器学习的数据管理开源机器学习库Kubernetes容器编排基础设施管理开源机器学习平台使用AWS机器学习服务构建数据科学环境使用AWS机器学习服务构建企业机器学习架构高级机器学习工程机器学习治理、偏差、可解释性和隐私使用人工智能服务和机器学习平台构建机器学习解决方案等内容。此外本书还提供了相应的示例、代码以帮助读者进一步理解相关方案的实现过程。 当当 https://product.dangdang.com/29625469.html 京东 https://item.jd.com/13855627.html