Python全局变量与局部变量

本文探讨了Python中全局变量与局部变量的区别,并通过两个示例展示了如何在Python中使用不同类型的输出方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

背景

——之前讲了由于自己在做数据挖掘方面的研究,因此自学了R和Python,在使用R的时候出现各种问题,而且R的问题处理机制没有Python的给的明确,python会直接告诉我们问题的具体位置和方面,以及解决办法都给了很详细的介绍,总的来说,python给我的最深刻的印象是简单、直接、明了,使用起来如流水一样,称的上这个比喻的另一个是我所喜欢的Apple。这个是我最近在看极课学院的Python基础里面所学到的,例子基本上也是引用的极课学院的。

def bar(x):#x局部变量
    x = 1
    print 'x:%d' % x  # DDDDDDDDD打印方式1

结果
m=9
bar(m)
x:1
x
Traceback (most recent call last):
  File "<input>", line 1, in <module>
NameError: name 'x' is not defined
m
9
x = 2  # 全局变量


def foo():
    x = 9  # 局部变量
    print 'x:', x  # DDDDDDDDD打印方式2

结果
foo()
x: 9
x
2

—–从上面的结果我们就可以很清楚的看出全局变量与局部变量的区别,同时也说明了python是按照引用传值的。同时上面这两个例子,我也用了两种不同的输出方式,一种是和C语言很像的,通过代位符来表示的,另一种是通过逗号的简单链接。好强大,有木有。

Python 中,全局变量局部变量的区别主要体现在作用域(scope)和生命周期上。变量的作用域决定了程序中哪些部分可以访问该变量,而生命周期则决定了该变量在内存中存在的时间。 ### 全局变量 全局变量是在函数外部定义的变量,它在整个模块(文件)中都是可见的,即可以在模块的任意位置访问该变量,包括函数内部。全局变量的生命周期从其定义开始,直到程序结束。 如果需要在函数内部修改全局变量的值,则需要使用 `global` 关键字来声明该变量为全局变量。否则,Python 会默认在函数内部创建一个新的局部变量[^1]。 ```python x = 10 # 全局变量 def func(): global x x = 5 print("函数内部 x =", x) # 输出 x = 5 func() print("函数外部 x =", x) # 输出 x = 5 ``` ### 局部变量 局部变量是在函数内部定义的变量,它的作用域仅限于该函数内部。局部变量只能在定义它的函数内被访问,函数执行完毕后,局部变量所占用的内存通常会被释放。 ```python def func(): y = 20 # 局部变量 print("局部变量 y =", y) func() # print(y) # 这里会抛出 NameError,因为 y 不在全局作用域中 ``` ### 使用规则 - **避免滥用全局变量**:虽然全局变量可以在整个程序范围内访问,但过度使用全局变量可能会导致代码难以理解和维护,因为它可能在任何地方被修改。 - **命名冲突**:由于全局变量在整个模块中都是可见的,因此要小心不要意外覆盖同名的局部变量或内置变量。 - **嵌套函数中的 `nonlocal` 关键字**:当处理嵌套函数时,如果希望在内层函数中修改外层非全局函数的变量,可以使用 `nonlocal` 关键字。 ```python def outer_func(): z = 30 # 外部函数的局部变量 def inner_func(): nonlocal z z = 40 print("内层函数中 z =", z) # 输出 z = 40 inner_func() print("外层函数中 z =", z) # 输出 z = 40 outer_func() ``` 通过上述示例可以看到,`global` 和 `nonlocal` 关键字允许我们在特定情况下修改不同作用域内的变量。理解这些概念有助于编写更加清晰、健壮的 Python 程序。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值