python在函数内部有没有办法定义全局变量_主函数内部的全局变量python

本文探讨了Python中的全局变量和函数作用域,解释了为何在函数内部修改全局变量可能导致错误。通过示例代码,展示了由于变量生命周期导致的NameError,并建议避免使用全局变量,而是通过参数传递或考虑使用类来组织代码。
摘要由CSDN通过智能技术生成

你想要什么是不可能的*。你可以在全局命名空间中创建一个变量:

myglobal = "UGHWTF"

def main():

global myglobal # prevents creation of a local variable called myglobal

myglobal = "yu0 = fail it"

anotherfunc()

def anotherfunc():

print myglobal

不要这样做。

函数的全部要点是它需要参数。只需将参数添加到您的功能。如果你发现你需要修改很多功能,这表明你应该将它们收集到一个班级中。

*为了详细说明为什么这是不可能的:python中的变量没有声明 - 它们是在执行赋值语句时创建的。这意味着下面的代码(从张贴astronautlevel代码派生)将打破:

def setcake(taste):

global cake

cake = taste

def caketaste():

print cake #Output is whatever taste was

caketaste()

Traceback (most recent call last):

File "prog.py", line 7, in

caketaste()

File "prog.py", line 5, in caketaste

print cake #Output is whatever taste was

NameError: global name 'cake' is not defined

这是因为当caketaste被调用时,没有分配给cake发生。它只会在调用setcake后才会发生。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值