Python 类型错误:';功能';对象在将一个函数传递给另一个函数时不可下标
每当我将我的第一个函数传递给另一个函数时,我就会得到这个错误,为什么会发生这种情况,我该如何解决它Python 类型错误:';功能';对象在将一个函数传递给另一个函数时不可下标,python,function,Python,Function,每当我将我的第一个函数传递给另一个函数时,我就会得到这个错误,为什么会发生这种情况,我该如何解决它 def analyze_playlist(*args): playlist_features_list = ["artist","track_name","track_id","danceability","energy","key&qu
def analyze_playlist(*args):
playlist_features_list = ["artist","track_name","track_id","danceability","energy","key","loudness","mode", "speechiness",'acousticness',"instrumentalness","liveness","valence","tempo", "duration_ms"]
playlist_df = pd.DataFrame(columns = playlist_features_list)
playlist_tracks = sp.playlist_tracks(*args)["items"]
for track in playlist_tracks:
playlist_features = {}
playlist_features["artist"] = track["track"]["artists"][0]["name"]
playlist_features["track_name"] = track["track"]["name"]
playlist_features["track_id"] = track["track"]["id"]
audio_features = sp.audio_features(playlist_features["track_id"])[0]
for feature in playlist_features_list[3:]:
playlist_features[feature] = audio_features[feature]
track_df = pd.DataFrame(playlist_features, index = [0])
playlist_df = pd.concat([playlist_df, track_df], ignore_index = True)
return playlist_df
analyze_playlist(a)
def classify_playlist(func):
spotify=pd.read_csv('../OUTPUT/spotify.csv')
spotify.drop(columns=['Unnamed: 0'],inplace=True)
spotify.columns
y = spotify['intervals'].values
X = spotify[['danceability', 'energy',
'loudness', 'speechiness', 'acousticness',
'instrumentalness', 'liveness', 'valence']].values
X_train, X_test, y_train,y_test = train_test_split(X,y, test_size=0.2)
forest = RandomForestClassifier(n_estimators=200)
forest.fit(X_train, y_train)
tx=func[['danceability', 'energy',
'loudness', 'speechiness', 'acousticness',
'instrumentalness', 'liveness', 'valence']].values
testdata= forest.predict(tx)
return testdata
Right now I am calling my second function passing it my second function and I get this error.
classify_playlist(analyze_playlist)
--->14 tx=func['可跳舞性','能量',
15‘响度’、‘清晰度’、‘声学’,
16‘仪表性’、‘活性’、‘价’]]值
TypeError:“函数”对象不可下标是的,函数可以作为参数传递
def square(x):
return x * x
def apply(func, val):
return func(val)
apply(square, 2)
4
你试过了吗?是的,你可以将一个函数传递给另一个函数。是的,你可以,但不要调用这个函数,只需传递名称,在python中,函数是可以调用的变量。当生成接受函数的函数时,以及调用它时,它可能是
def func(f):f()
,您可能已经找到了它,但是您可以像func(func)
一样传递函数本身。请查看排序的的键=
参数,了解一个常见示例。