Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 类型错误:';功能';对象在将一个函数传递给另一个函数时不可下标_Python_Function - Fatal编程技术网

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)
一样传递函数本身。请查看
排序的
键=
参数,了解一个常见示例。