首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Python 递归函数返回值为 None 的解决办法

在使用 Python 开发的过程中,避免不了会用到递归函数。但递归函数的返回值有时会出现意想不到的情况。 下面来举一个例子: >>> def fun(i): ... ...return i ... >>> r = fun(0) >>> print(r) 比如上面这段代码,乍一看没什么问题,但返回值并不是我们期望的 5,而是 None。...最后补充一句,如果想要了解这背后深层的原理,可以看看函数调用栈相关的资料,这里就不过多介绍了。 本文就到这里了,如果觉得有用的话欢迎点赞,转发和关注,谢谢。...---- 推荐阅读: 计算机经典书籍 技术博客: 硬核后端开发技术干货,内容包括 Python、Django、Docker、Go、Redis、ElasticSearch、Kafka、Linux 等。...面试题汇总: 包括 Python、Go、Redis、MySQL、Kafka、数据结构、算法、编程、网络等各种常考题。

71700
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    【Python】函数的定义和调用、形参和实参、函数的返回值、多元赋值、全局和局部变量

    ,才能算是函数的内部语句 函数执行到 return 就代表执行完了,后面跟的值就是函数的返回值。...) 函数的返回值 函数的参数可以视为是函数的 "输入", 则函数的返回值, 就可以视为是函数的 "输出" ....函数的参数就是原材料, 函数的返回值就是生产出的产品....,if 里面有一个 return 了, 所以一旦条件满足,就会执行 if 里面的 return,函数就结束了,就没有机会执行到外面的 return 了 Python 中的一个函数可以返回多个值,是非常香的特征...,C++/Java 都馋哭了 C++/Java 中调用一个函数一次只能返回一个值 C++要想返回多个值,可以通过输出型参数(指针/引用) Java 要想返回多个值,需要把多个值给包装成一个对象,然后再返回这个对象

    8610

    【Python】函数的定义和调用、形参和实参、函数的返回值、多元赋值、全局和局部变量

    ,才能算是函数的内部语句 函数执行到 return 就代表执行完了,后面跟的值就是函数的返回值。...) 函数的返回值 函数的参数可以视为是函数的 “输入”, 则函数的返回值, 就可以视为是函数的 “输出” ....函数的参数就是原材料, 函数的返回值就是生产出的产品....,if 里面有一个 return 了, 所以一旦条件满足,就会执行 if 里面的 return,函数就结束了,就没有机会执行到外面的 return 了 Python 中的一个函数可以返回多个值,是非常香的特征...,C++/Java 都馋哭了 C++/Java 中调用一个函数一次只能返回一个值 C++要想返回多个值,可以通过输出型参数(指针/引用) Java 要想返回多个值,需要把多个值给包装成一个对象,然后再返回这个对象

    19110

    【干货】计算机视觉实战系列08——用Python做图像处理

    在连续表示的情况下,全变差表示为: ? 在离散表示的情况下,全变差表示为: ? 其中,上面的式子是在所有图像坐标x=[x,y]上取和。...在ROF模型里,目标函数是为了寻找降噪后的图像U,使下式最小: ? 其中范数||I-U||是去噪后图像U和原始图像I差异的度量。...(b) 图中(a)为经过高斯模糊的图像,(b)为经过ROF模型去噪后的图像 在上面代码中,输入为含有噪声的灰度图像、U 的初始值、TV 正则项权值、步长、停业条件;输出:去噪和去除纹理后的图像、纹理残留...im.shape表示噪声图像的大小;Px和Py分别表示对偶域的x分量和对偶域的y分量;GtandUx和GrandUy分别表示变量U梯度的x分量和y分量; RxPx = roll(Px,1,axis=1)...和 RyPy = roll(Py,1,axis=0)分别表示对x 分量进行向右x 轴平移和对y 分量进行向右y 轴平移;denoise方法最终返回去早后的图像和纹理残余。

    1.3K20

    机器学习(7)之感知机python实现

    SGD算法的流程如下:输入训练集和学习率 1、初始化w0,b0,确定初始化超平面,并确定各样例点是否正确分类(利用yi和wx+b的正负性关系); 2、随机在误分类点中选择一个样例点,计算L关于w和b在该点处的梯度值...原始问题目标函数中的收益系数(优化函数中变量前面的系数)是对偶问题约束不等式中的右端常数,而原始问题约束不等式中的右端常数则是对偶问题中目标函数的收益系数;原始问题和对偶问题的约束不等式的符号方向相反;...原始问题约束不等式系数矩阵转置后即为对偶问题的约束不等式的系数矩阵;原始问题的约束方程数对应于对偶问题的变量数,而原始问题的变量数对应于对偶问题的约束方程数;对偶问题的对偶问题是原始问题。...对偶问题中,此处将w和b看成是x和y的函数,w和b可表示为 ? ,ni表示更新次数,模型 ?...,算法流程如下:输入训练集,学习率 1、 ; 2、随机选取误分类点对,并更新计算 ,具体更新,依据上面的表达式; 3、直至没有误分类点,停止计算,返回相应的参数; 原始问题和对偶问题都是严格可收敛的

    1.6K51

    线性规划之单纯形法【超详解+图解】

    那么,求得的可行解即表示这两条直线的交点,也是可行域的顶点,如图所示: 图2        所以,通过选择不同的基变量,可以获得不同的可行域的顶点。...使用单纯型法来求解线性规划,输入单纯型法的松弛形式,是一个大矩阵,第一行为目标函数的系数,且最后一个数字为当前轴值下的 z 值。下面每一行代表一个约束,数字代表系数每行最后一个数字代表 b 值。...在n维空间中不断走 “相当于不等式上的高斯消元” 【代码实现】: pivot是转动操作 基本思想就是改写l这个约束为xe作为基本变量,然后把这个新xe的值带到其他约束和目标函数中,就消去xe了 改写和带入时要修改...m个,尽管B和N不断交换,但同一时间还是只有m个约束(基本变量)n个非基变量 注意改写成松弛型后a矩阵实际系数为负 (一个优化 a[i][e]为0的约束没必要带入了 simplex是主过程 基本思想是找到一个...c[e]>0的,然后找对这个e限制最紧的l,转动这组l e 注意精度控制eps c[e]>eps  还有找l的时候a[i][e]>eps才行 【对偶原理】: 1.原始线性规划 对偶线性规划 2.对于 最大化

    31.4K103

    图解机器学习 | 支持向量机模型详解

    所以,为了得到对偶问题的解,需要先求 L(w, b, \alpha) 对 w、b 的极小值,再求对 \alpha 的极大值。...② 求 L(w, b, \alpha) 对 w、b 的极小值 将拉格朗日函数 L(w, b, \alpha) 分别对 w、b 求偏导,并令其值为0。...当C很小的时候,分错的点可能会很多,不过可能由此得到的模型也会不太正确。 实际我们也会调整和选择合适的C值。....png] 上述两个核函数分别为多项式核和高斯核,高斯核甚至是将原始空间映射为无穷维空间,另外核函数有一些比较好的性质,比如说不会比线性条件下增加多少额外的计算量,等等,此处我们不深入。...对于一个问题,不同的核函数可能会带来不同的结果,我们需要做一些尝试来支撑选择(关于这个部分,大家可以看最下方的python实现部分)。

    94552

    数学建模--线性规划法

    对偶问题不仅有其数学上的表达形式,还具有明显的经济含义。例如,在资源分配和成本优化中,对偶变量的最优解可以表示为资源的影子价格,即资源的替代成本。...这为验证和确认最优解提供了有力工具。 对偶理论可以用于提高线性规划问题的求解效率。...特别是对于大规模线性规划问题,使用对偶单纯形算法(Duality Simplex Algorithm)可以显著减少计算复杂度和时间消耗。这种方法利用了对偶问题的结构特性,使得求解过程更加高效。...补充松弛性条件是线性规划中的一个基本概念,它表明在最优解下,原问题的约束条件和对偶问题的变量之间存在一种互补关系。这一条件为理解和求解线性规划问题提供了重要的理论基础。...在实际应用中,对偶理论被广泛应用于生产计划、投资组合选择、运输问题等领域。例如,在资源分配问题中,通过求解对偶问题可以确定不同资源的最优分配方案,从而实现整体成本的最小化。

    19910

    【Python机器学习实战】感知机和支持向量机学习笔记(二)

    理论上对于线性可分的数据,采用梯度下降对SVM进行求解和学习已能满足基本要求,但考虑到非线性数据,以及问题求解的复杂程度等问题,将SVM原始问题转化为其对偶形式能够更好地解决问题,因此转化为对偶形式是必要的...,总结下来,转化为对偶形式有以下好处: 转化为对偶形式后,原始问题中的不等式约束将变为等式约束,便于求解; 对偶问题降低了求解的复杂度,原始问题中求解w转化为对偶问题中的α,原始问题中的w与样本的特征数量有关...,当数据维度过大时,求解复杂度变高,而α的求解仅与样本的数量有关; 求解速度更快,当求解α时,当样本为非支持向量时,α的值为0,只有当样本为支持向量时,对应的α才为非零; 对偶问题方便运用核方法解决非线性问题...最终输出模型为: 核SVM的训练过程 接下来是核SVM的训练过程,该过程也是将对偶形式中的内积形式替换为核函数即可,替换后的目标函数变为:   不妨设α1,α2为选定的两个变量,其余均为固定值,那么上述目标函数变为...dw和db: 然后根据dw和db更新预测值y:        至此一次迭代完成,返回至第二步。

    63100

    拉格朗日对偶问题

    ; 无论原始问题是否是凸的,对偶问题都是凸优化问题; 对偶问题可以给出原始问题一个下界; 当满足一定条件时,原始问题与对偶问题的解是完全等价的; 拉格朗日对偶问题的凹函数性质证明 按照定义 对偶问题有一个很好的性质是对偶函数为凹函数...定义原始问题的值为: p^{*}=\min _{x} P(x) \tag{16} 对偶问题 延续上文的对偶问题\eqref{eq7} 可以看到事实上对偶问题与原问题为极大极小的求解顺序问题 定义对偶问题的值...: image.png 原始问题与对偶问题的关系 对偶问题的解不大于原始问题的解: 证明: image.png 该性质为弱对偶性(weak duality),该性质在任何情况下都成立 也因为弱对偶的存在...f(x)和h(x)是凸函数 g(x)是放射函数 存在x使得不等式约束严格成立(严格成立不等号) KKT 条件 原问题是否为凸函数的两种情况下,KKT的用法不同 原问题非凸 当原问题并非凸优化...原问题为凸函数 当原问题为凸优化时,KKT 条件在非凸的基础上有多了找到最优点的功能 在这种情况下,那么满足 KKT 条件的点一定是原问题和对偶问题的最优解;KKT 条件成了强对偶和最优解的充要条件

    87730

    机器学习(19)之支持向量回归机

    这些都关注与SVM的分类问题。实际上SVM也可以用于回归模型,本篇就对如何将SVM用于回归模型做一个总结。重点关注SVM分类和SVM回归的相同点与不同点。...SVR目标函数的原始形式 SVM回归模型的损失函数度量在加入松弛变量之后变为: ? 和SVM分类模型相似,我们可以用拉格朗日函数将目标优化函数变成无约束的形式。...SVR目标函数的对偶形式 SVR目标函数的原始形式,我们的目标是 ?...和SVM分类模型一样,这个优化目标也满足KKT条件,也就是说,我们可以通过拉格朗日对偶将我们的优化问题转化为等价的对偶问题来求解如下: ?...最终得到的对偶形式为: ? 对目标函数取负号,求最小值可以得到和SVM分类模型类似的求极小值的目标函数如下: ? SVR系数的稀疏性 在SVM分类模型中,我们的KKT条件的对偶互补条件为: ?

    1.3K50

    机器学习(13)之最大熵模型详解

    熵和条件熵 在(机器学习(9)之ID3算法详解及python实现)一文中,我们已经讲到了熵和条件熵的概念,这里我们对它们做一个简单的回顾。 熵度量了事物的不确定性,越不确定的事物,它的熵就越大。...具体的,随机变量X的熵的表达式如下: ? 其中n代表X的n种不同的离散取值。而pi代表了X取值为i的概率,log为以2或者e为底的对数。 两个变量X和Y的联合熵表达式: ?...特征函数f(x,y)关于经验分布P¯(X,Y)的期望值,用EP¯(f)表示为:  ? 特征函数f(x,y)关于条件分布P(Y|X)和经验分布P¯(X)的期望值,用EP(f)表示为: ?...其中wi(i=1,2,...m)为拉格朗日乘子。由于原始问题满足凸优化理论中的KKT条件,因此原始问题的解和对偶问题的解是一致的。这样我们的损失函数的优化变成了拉格朗日对偶问题的优化。...这样我们就得出了P(y|x)和w的关系,从而可以把对偶函数ψ(w)里面的所有的P(y|x)替换成用w表示,这样对偶函数ψ(w)就是全部用w表示了。

    1.2K71

    OpenCV-Python学习(12)—— OpenCV 向图像添加文本(cv.putText、cv.getTextSize)

    color 表示绘制直线的颜色,(b,g,r) 格式的元组,或者表示灰度值的标量。 thickness 表示绘制直线的粗细,默认值 1px,-1 表示内部填充。...lineType 表示绘制直线的线性,默认为 LINE_8。 bottomLeftOrigin 表示为可选参数,默认值 True 表示数据原点位于左下角,False 表示位于左上角。...2.3 fontFace 值说明 值 描述 cv.FONT_HERSHEY_SIMPLEX 表示正常大小无衬线字体。 cv.FONT_HERSHEY_PLAIN 表示小号无衬线字体。...thickness 表示绘制直线的粗细,默认值 1px,-1 表示内部填充。 3.3 返回参数说明 返回参数 说明 (fw,fh) 表示文本区域大小的宽高。...总结 函数 cv.putText 的参数 thickness 不能为负数,负数报错; cv2.error: OpenCV(4.6.0) D:\a\opencv-python\opencv-python\

    2.4K30

    机器学习线性分类算法:感知器原理

    此外,根据novikoff定理,可得到一些结论:1、存在|w|=1的超平面可以将案例分开,且 ;2、 表示误分类次数;此处w和x是扩展后的样例数据,将权值和1分别连接到原来的w和b后形成一个大向量。...并且原始问题与对偶问题在形式上存在很简单的对应关系:目标函数对原始问题是极大化,对对偶问题则是极小化 原始问题目标函数中的收益系数(优化函数中变量前面的系数)是对偶问题约束不等式中的右端常数,而原始问题约束不等式中的右端常数则是对偶问题中目标函数的收益系数...原始问题和对偶问题的约束不等式的符号方向相反 原始问题约束不等式系数矩阵转置后即为对偶问题的约束不等式的系数矩阵 原始问题的约束方程数对应于对偶问题的变量数,而原始问题的变量数对应于对偶问题的约束方程数...对偶问题中,此处将w和b看成是x和y的函数,w和b可表示为 ,ni表示更新次数,模型 ,算法流程如下:输入训练集,学习率 1、 ; 2、随机选取误分类点对,并更新计算 ,具体更新,依据上面的表达式; 3...、直至没有误分类点,停止计算,返回相应的参数; 原始问题和对偶问题都是严格可收敛的,在线性可分的条件下,一定可以停止算法运行,会达到结果,存在多个解。

    1.7K60

    拉格朗日对偶性(Lagrance duality) 推导与简单理解

    引言 在支持向量机和最大熵模型中都会用到拉格朗日对偶性,主要为解决约束最优化问题,通过将原始问题转换为对偶问题求解。为方便理解,遂记录下简单的概念的结论,有理解不当的地方望多提意见~ 1....原始问题和对偶问题的关系 若原始问题和对偶问题都有最优值,那么 d∗=maxα,βminxL(x,α,β)≤minxmaxα,β:αi≥0L(x,α,β)=p∗ d^*=\max_{\boldsymbol...,但是我们要通过对偶问题来求解原始问题,就必须使得原始问题的最优值与对偶问题的最优值相等,于是可以得出下面的推论: 设 x∗和α∗,β∗ x^*和\alpha^*,\beta^*分别是原始问题和对偶问题的可行解并且...对偶问题跟原始问题可以看成本来是两个问题,因为优化的顺序不同而会得出两个不一定相关的值(但是 minxmaxyf(x,y)≥maxymaxxf(x,y) \mathop{min}_{x}\mathop...所以,当原始问题和对偶问题的最优值相等: d∗=p∗ d^*=p^*时,可以用求解对偶问题来求解原始问题(当然是对偶问题求解比直接求解原始问题简单的情况下),但是到底满足什么样的条件才能使 d∗=p∗

    1.7K20

    基于感知机Perceptron的鸢尾花分类实践

    感知机简介 感知机(perceptron)是二类分类的线性分类模型 输入:实例的特征向量 输出:实例的类别,取 +1 和 -1 二值 感知机对应于输入空间(特征空间)中将实例划分为正负两类的分离超平面,...感知机学习算法具有简单而易于实现的优点,分为原始形式和对偶形式。 预测:对新的输入进行分类 具体内容见李航《统计学习方法》第二章,感知机 读书笔记。 2....编写感知机实践 本文代码参考了此处:fengdu78,本人添加了感知机算法的对偶形式,并对不同的参数下的迭代次数进行比较。...,y是最后一列 X, y = data[:, :-1], data[:, -1] # 生成感知机的标签值,+1, -1, 第一种-1,第二种+1 y = np.array([1 if i == 1 else...结论: 感知机的两种算法形式均会因为初值和学习率的不同,而造成的多种迭代路径 从上面图标也印证了,对于线性可分的数据,感知机学习算法迭代是收敛的 3. sklearn 感知机实践 sklearn.linear_model.Perceptron

    2.2K40

    机器学习 学习笔记(2)拉格朗日乘子法 拉格朗日对偶性

    是广义拉格朗日函数的极小极大问题,把原始最优化问题表示为广义拉格朗日函数的极小极大问题. 定义原始问题的最优值为: ? 对偶问题: 定义: ? 考虑极大化 ? ,即: ?...为广义拉格朗日函数的极大极小问题: 可以将广义拉格朗日函数的极大极小问题表示为约束最优化问题: ? ? 称为原始问题的对偶问题,定义对偶问题的最优值为: ?...,为对偶问题的值 原始问题和对偶问题的关系 若原始问题和对偶问题都有最优值,则: ? 1、 设 ? 和 ? , ? 分别是原始问题和对偶问题的可行解,并且 ? ,则 ? 和 ? , ?...分别是原始问题和对偶问题的最优解。 2、考虑原始问题和对偶问题,假设函数 ? 和 ?  是凸函数, ? 是仿射函数,并且假设不等式约束 ? 是严格可行的,即存在x,对所有i有 ? ,则存在 ?...3、对原始问题和对偶问题,假设函数 是凸函数, 是仿射函数,并且假设不等式约束是严格可行的,则分别是原始问题和对偶问题的解的充分必要条件是 满足下面的Karush-kuhn-Tucker(KKT)条件:

    63710

    简单聊聊 Perlin 噪声(下篇)

    二维 Perlin 噪声的生成方式和 二维 Value 噪声的生成方式大体相同,二维 Perlin 噪声也是根据给定的坐标选取对应的正方形,并将该正方形的四个顶点作为插值端点,但是在 Perlin 噪声中...除此之外, 二维 Perlin 噪声的生成过程就和 二维 Value 噪声的生成过程就没有什么不同了( ar,br,cr,drar, br, cr, drar,br,cr,dr 为四个端点对应的梯度向量..., av,bv,cv,dvav, bv, cv, dvav,bv,cv,dv 为四个端点与给定坐标形成的距离向量, uuu 为 xxx 轴原始的线性插值系数, vvv 为 yyy 轴原始的线性插值系数...(注:上图展示的是实际生成的二维 Perlin 噪声数据,显示上没有做额外的插值处理,所以看起来会有明显的边界) Simplex 噪声 Simplex 噪声是 Perlin 噪声的改进版,(二维)Perlin...(二维单形示例) Simplex 噪声中随机值的生成也和 Perlin 噪声有所不同,有兴趣进一步了解的朋友可以从这里看起~ 多维 Perlin 噪声 从 二维 Perlin 噪声扩展到 多维 Perlin

    1.2K10
    领券