def函数中已经过全局声明的变量在后续代码中仍显示未定义

在遍历文件夹中的txt文件之后得出的x y的返回值,在前面已经进行了全局声明,但在后续代码中仍显示‘not defined'

import matplotlib.pyplot as plt
import os
from mpl_toolkits.basemap import Basemap
import numpy as np

path = './pass/'
files_AlexNet_acc = []
for file_acc in os.listdir(path):
    if file_acc.endswith("AlexNet_acc.txt"):
       files_AlexNet_acc.append(path + file_acc)

def loadData(file):
    global x, y
    y = []
    x = []
    with open(file, 'r') as f:
        print(file)
        lines = f.readlines()
        for line in lines:
            datai = line.split()
            y.append(float(datai[0]))
            x.append(float(datai[1]))
    return x,y

plt.figure(figsize=(10, 6))
m = Basemap()
m.drawcoastlines()
parallels = np.arange(-90., 90., 10.)
m.drawparallels(parallels, labels=[False, True, True, False])
meridians = np.arange(-180., 180., 20.)
m.drawmeridians(meridians, labels=[True, False, False, True])
lon = [list(y)]
lat = [list(x)]
lon, lat = m(lon, lat)
m.scatter(lon, lat, s=100, c="red")
plt.show()

运行结果如下:

C:\Users\14506\PycharmProjects\pythonProject1\venv\Scripts\python.exe C:/Users/14506/PycharmProjects/pythonProject1/main.py
Traceback (most recent call last):
  File "C:\Users\14506\PycharmProjects\pythonProject1\main.py", line 32, in <module>
    lon = [list(y)]
NameError: name 'y' is not defined

进程已结束,退出代码1


有想过是不是因为xy的变量类型不对 但是后续做出改动后仍报错

x和y未在主程序中定义,函数loadData(file)中的语句global x, y只是表示本代码块中用到的x和y是来自于全局定义,并不是对x和主的全局定义。解决方法:只需要在主程序添加对x和y赋初值的语句就可以了。

我觉得是你定义了loadData,但没调用的问题

img