pycharm中定义两个函数,两个函数有相同的变量,运行结果显示第二个函数变量没有被定义

pycharm的同一个py文件中,定义了两个函数,第一个函数中涉及到有j这个变量,第一个函数首次出现j这个变量的地方如下
  for i, j in zip(trajectory_row_grid_idx, trajectory_column_grid_idx):
        if delay_step_i < delay_step + 5:
            bighead_row_grid_idx.append(i)
            bighead_column_grid_idx.append(j)
第二个函数也涉及到j变量且代码如下
 def AirTrafficImage_Generate(time_interval_span, Proprocessed_Radardata_df, ComplexityLabel_df, X_grid_num, Y_grid_num, X, Y, label_idx_in_column):
StartTime_all_datetime = Proprocessed_Radardata_df['actual_over_time'].min() - datetime.timedelta(seconds = j)
运行结果显示第二个函数j变量没有被定义,报错内容如下
 StartTime_all_datetime = Proprocessed_Radardata_df['actual_over_time'].min() - datetime.timedelta(seconds = j)
 NameError: name 'j' is not defined
查了好多方法,仍然没有解决
请教大家,有什么解决方法没有

第一个j是属于局部变量,只在for循环内部生效,题主定义的第二个函数如果想使用for循环中的j,可以把j作为参数传入,然后在for循环的时候,再来调用第二个函数,把j传入就好了

变量j是在循环内部的

局部变量是无法在函数之间传递的,如果要在两个函数使用同一个变量,那么就要在函数外面定义全局变量j,这样两个函数都可以使用,另外需要注意的是,函数内部如果要对全局变量进行修改,那么要用到关键字globle

第二个函数加个参数,把j作为参数传进来

把j的定义放到“第一个函数”和“第二个函数”相同级别上。这样两个函数才能共享使用这个变量。


j = 0

def func1():
  for i,j in ......

def AirTrafficImage_Generate(time_interval_span, Proprocessed_Radardata_df, ComplexityLabel_df, X_grid_num, Y_grid_num, X, Y, label_idx_in_column):
  StartTime_all_datetime = Proprocessed_Radardata_df['actual_over_time'].min() - datetime.timedelta(seconds = j)

for i,j 中的i和j 这两个变量的生存周期只在for循环内,出了这个循环之外如果没有重新定义是不能直接用的

前面定义一下j就好了呀,朋友试试,不行的话把代码发我改一下给你

变量j得进行传参才可以

可以把j定为全局变量,放在两个函数外面,这样就解决了局部变量不能在函数之间传递的问题。
例如:

hi="哈哈"
def name():
    hi="老母鸡"

name()
print(hi)

输出结果为“哈哈”

你的这个J是在第一个循环内部,当然无法传递到第二个函数

需要将j定义到函数外,作为全局变量,就可以被调用了