【发布时间】:2021-05-04 05:05:37
【问题描述】:
我可能会问一个非常愚蠢的问题。我设计了如下代码:
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
def menu():
print("[1]: Favorite color")
print("[2]: Number of cats")
#Option1
def FavColor():
sns.countplot(x= "Color", data = main_data)
plt.show()
#Option2
def NumCats():
sns.countplot(x= "Cats", data = main_data)
plt.show()
#Main Code
try:
main_data = pd.read_csv("DATAFIN.csv")
except IOError:
print("Error while trying to open the file")
else:
menu()
option = int(raw_input())
if option == 1:
FavColor()
elif option == 2:
NumCats()
main_data 如下所示:
Color Cats
1 Blue 1
2 Yellow 2
3 Blue 2
4 Red 1
5 Blue 3
现在,“问题”是我的程序完全按照它应该运行的方式运行。然而,我刚刚意识到,我的所有函数 options()、Option1() 和 Option2() 在括号内都没有参数。这是因为我忘记了这样做,但我的理解是,如果没有我给它们提供需要使用的参数,我的函数就不应该工作。
例如,如果 Option1 必须使用精确的数据帧,我应该编写 Option1(dataframe)。
我的函数需要你的一切都在主代码中定义,你在调用函数之前要经过这些,所以也许这就是原因。但是不把参数放在里面有错吗?它会降低我的程序效率吗?
【问题讨论】:
-
首先,python2 是生命的尽头,你不应该使用它。其次,如果您使用的是未定义的变量,Python 会这样抱怨,因此您需要显示实际代码的minimal reproducible example
-
@OneCricketeer 对不起!我刚刚完成了我的编辑。非常感谢您的反馈。我知道 python2 是一个错误,但我被告知要使用它,因为班上的其他人都在使用它。我会尽快升级
-
那么,当您说“按应有的方式运行”时,您是否能够很好地获得 seaborn 情节?您是否在可能已经存在对
main_data的引用的 Jupyter 笔记本环境中运行此代码?你的老师应该知道 Python3 已经面世十多年了 -
@OneCricketeer 是的,我得到的情节很好,我相信它们也是正确的。我在 Visual Studio Code 中运行它,但在运行代码之前未定义 main_data。在我的 .py 代码以外的环境中,我只有 DATAFIN.csv 文件。
标签: python function parameters