Python 为什么我的程序在函数';括号?
我要问一个可能很愚蠢的问题。我设计了如下代码:Python 为什么我的程序在函数';括号?,python,function,parameters,Python,Function,Parameters,我要问一个可能很愚蠢的问题。我设计了如下代码: 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= "C
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()
主数据如下所示:
Color Cats
1 Blue 1
2 Yellow 2
3 Blue 2
4 Red 1
5 Blue 3
现在,“问题”是我的程序运行完全正常。然而,我刚刚意识到,我所有的函数options()、Option1()和Option2()都没有参数在括号内。这是因为我忘了这么做,但我的理解是,如果我不给函数提供需要使用的参数,它们就不能工作
例如,如果Option1必须使用精确的数据帧,我应该编写Option1(数据帧)
我的函数所需要的一切都是在主代码中定义的,您在调用函数之前都会经历主代码,所以这可能就是原因。但是不把参数放进去是错误的吗?它会降低我的程序的效率吗?空括号表示它没有参数
定义新函数不会使函数运行。空括号表示它没有参数
定义新函数不会使函数运行。您只是碰巧引用了一个全局变量 这里有一个更简单的例子
def foo():
print(x)
x = 2
foo()
x可以在函数之前或之后定义;函数定义捕获变量引用的闭包,而不是变量本身
另一方面,如果用局部变量定义一个主函数,它将不起作用
def foo():
print(x)
def main():
x = 2
foo()
main()
一般来说,应避免使用全局变量,因此应使用参数,这些参数只是引用,为函数参数分配的内存空间开销可以忽略不计 这里有一个更简单的例子
def foo():
print(x)
x = 2
foo()
x可以在函数之前或之后定义;函数定义捕获变量引用的闭包,而不是变量本身
另一方面,如果用局部变量定义一个主函数,它将不起作用
def foo():
print(x)
def main():
x = 2
foo()
main()
一般来说,应避免使用全局变量,因此应使用参数,这些参数只是引用,为函数参数分配的内存空间开销可以忽略不计谢谢!但我还是不明白。我的程序工作没有任何问题,就像我把参数放在括号里一样。这怎么可能?在这里,我编写了一个简化版的代码,但实际上每个函数都有5-10行长,而且都可以工作。@mcnew然后您需要发布您正在使用的确切代码。您发布的代码肯定无法运行,因为它试图使用一个不存在的变量。谢谢!但我还是不明白。我的程序工作没有任何问题,就像我把参数放在括号里一样。这怎么可能?在这里,我编写了一个简化版的代码,但实际上每个函数都有5-10行长,而且都可以工作。@mcnew然后您需要发布您正在使用的确切代码。你发布的代码肯定不会工作,因为它试图使用一个不存在的变量。首先,python2是生命的终结,你不应该使用它。第二,如果您使用的是未定义的变量,Python也会这样抱怨,所以您需要显示一个实际变量code@OneCricketeer很抱歉我刚完成编辑。非常感谢您的反馈。我知道python2是一个错误,但我已经被告知使用它,因为班上其他人都在使用它。我会升级soonSo,当你说“按它应该的方式运行”时-你能得到一个seaborn地块吗?您是否在Jupyter笔记本环境中运行此代码,其中可能已经存在对
main\u数据的引用?你的老师应该知道Python3已经上市十年了now@OneCricketeer是的,我得到的情节很好,我相信他们也是正确的。我在VisualStudio代码中运行它,但是在运行代码之前没有定义主数据。在我的环境中,除了.py代码之外,我只有DATAFIN.csv文件。首先,python2是生命的终结,你不应该使用它。第二,如果您使用的是未定义的变量,Python也会这样抱怨,所以您需要显示一个实际变量code@OneCricketeer很抱歉我刚完成编辑。非常感谢您的反馈。我知道python2是一个错误,但我已经被告知使用它,因为班上其他人都在使用它。我会升级soonSo,当你说“按它应该的方式运行”时-你能得到一个seaborn地块吗?您是否在Jupyter笔记本环境中运行此代码,其中可能已经存在对main\u数据的引用?你的老师应该知道Python3已经上市十年了now@OneCricketeer是的,我得到的情节很好,我相信他们也是正确的。我在VisualStudio代码中运行它,但是在运行代码之前没有定义主数据。在我的环境中,除了.py代码之外,我只有DATAFIN.csv文件。非常感谢!这意味着,如果出于任何原因,我的主代码是一个函数,那么整个程序将无法运行。对吗?再次感谢您的帮助。您仍然可以在主函数之外读取该文件,但问题是变量作用域比任何东西都重要。明白了。再次感谢:)非常感谢!这意味着,如果出于任何原因,我的主代码是一个函数,那么整个程序将无法运行。对吗?再次感谢您的帮助。您仍然可以在主函数之外读取该文件,但问题是变量作用域比任何东西都重要。明白了。再次感谢:)