为什么我的程序在函数括号内没有参数的情况下运行?

麦克纽

我想问一个很愚蠢的问题。我设计了如下代码:

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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么函数在没有参数的情况下运行?

为什么在我使用打字稿的 Angular 应用程序中,在这种情况下没有更改函数内的变量?

为什么在没有提供数据参数的情况下引用此函数?

为什么我的测试在没有运行 mongodb 实例的情况下会成功?

为什么在没有类型应用程序的情况下某些函数调用无法工作?

为什么execve系统调用可以在没有任何argv参数的情况下运行“ / bin / sh”,而在没有“ / bin / ls”的情况下运行?

为什么 deos sort() 方法中的两个参数函数在没有参数的情况下运行,为什么该函数应该有两个参数?

为什么我们可以重定向“ less”命令的输入,但是却不能在没有任何参数的情况下减少运行?

为什么项目可以在没有工厂的情况下创建带有构造函数参数的ViewModel类的实例

为什么我的代码在没有chroot函数的情况下可以工作,而在chroot函数中却失败了?

为什么在没有使用适当参数请求的情况下replace()函数返回经过语法编辑的结果?

为什么我的ffmpeg进程在没有stdin参数的情况下永远等待subprocess.run?

如果我可以在没有密码的情况下进行sudo,为什么需要tty来运行sudo?

为什么我不能在没有括号的情况下调用lambda表达式?

为什么我可以在没有编译器错误的情况下将错误的接口传递给函数?

为什么我的函数在不要求输入的情况下运行?

为什么这段代码在没有我告诉它的情况下修改了我的数组?

在python中,如何在没有程序等待完成的情况下运行函数?

我如何在没有参数args的情况下启动spring网络启动程序?

为什么我可以在没有 getter 方法的情况下访问私有实例变量?

当脚本在没有它的情况下正常运行时,为什么要使用`return`?

Gulp任务在没有'return'语句的情况下运行得更快-为什么?

为什么AFNetworking在没有互联网连接的情况下可以成功运行?

在Linux上没有Qt的情况下运行我的应用程序

没有安装驱动程序的情况下,我的Intel gpu如何运行?

为什么在没有操作符地址的情况下使用函数指针?

为什么 foo() 函数在没有被调用的情况下被执行?

为什么在这种情况下没有调用最合适的构造函数?

为什么在没有指纹读取器的情况下启动指纹守护程序?