Python函数中如何给可选参数传递位置参数?梯度下降代码报错咨询
解决Python函数默认参数依赖输入参数的问题
为什么你的代码会报错?
Python函数的默认参数是在函数定义阶段就会被计算,而非调用阶段。你写w0=np.zeros(X.shape[1])时,定义函数的时刻X还未被传入,自然会提示X未定义。
正确的写法
把w0的默认值设为None,在函数内部根据X的形状生成初始参数:
import numpy as np def gradient_descent(X, w0=None): # 如果没传入w0,就根据X的列数生成零数组 if w0 is None: w0 = np.zeros(X.shape[1]) # 这里编写你的梯度下降逻辑代码
关于可选参数传递位置参数的问题
Python完全支持给可选参数传递位置参数,只要参数的位置和函数定义里的顺序对应即可。比如上面的函数,调用时直接写gradient_descent(my_X, my_initial_w),就是把my_initial_w作为位置参数传给w0。你也可以用关键字参数gradient_descent(my_X, w0=my_initial_w),两种方式都合法。
内容的提问来源于stack exchange,提问作者Yu Lu
相关产品推荐
相关产品推荐

