我想问一个很愚蠢的问题。我设计了如下代码:
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)。
我的函数需要的所有内容都在主代码中定义,您在调用函数之前就已进行了遍历,所以也许这就是原因。但是,不将参数放入内部是否错误?它会使我的程序效率降低吗?
您正好是在指一个全局变量
这是一个简单的例子
def foo():
print(x)
x = 2
foo()
x可以在函数之前或之后定义;函数定义捕获变量引用的关闭,而不是变量本身
另一方面,如果您使用局部变量定义了主函数,那么它将不起作用
def foo():
print(x)
def main():
x = 2
foo()
main()
通常,应避免使用全局变量,因此应使用仅作为参考的参数,而为函数参数分配的内存空间的开销可以忽略不计
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句