函数参数,命名空间,作用域

函数参数类型

不可变类型参数:整型,字符串,元组。fun(a)内部修改 a 的值,只是修改另一个复制的对象,不会影响 a 本身。

def hanshu(a):
    a+=3   #a=a+3
    print("函数内部a=",a)
x=10
hanshu(x)
print('x=',x)

可变类型参数:列表,字典。如 fun(la),则是将 la 真正的传过去,修改后 fun 外部的 la 也会收到影响。

def hanshu(a):
    a.append(3)
    print(a)
x=[1,2]
hanshu(x)
print(x)
def hanshu(a):
    a['name']='李四'
    print(a)
x={'name':'张三','age':18}
hanshu(x)
print(x)

命名空间的访问

局部命名空间使用 locals() 函数来访问
全局命名空间的访问使用 global() 函数访问

a=3
b=4
def hanshu(x):
    c=5
    d=6
    print(locals())
print(globals())
hanshu(6)

作用域

作用域指的是变量在程序中的可应用范围
作用域按照变量的定义位置可以划分为4类即 LEGB;
Local(函数内部)局部作用域
Enclosing(嵌套函数的外层函数内部)嵌套作用域(闭包)
Global(模块全局)全局作用域
Built-in(内建)内建作用域。(指的是builtins.py模块)

a=3
b=30
c=300
def hsw():
    a=4
    b=40
    def hsn():
        a=5
        print(a)
        print(b)
        print(c)
        print(__name__)
    hsn()
hsw()

在Python中,模块(module),类(class),函数(def 、lambda)会产生新的作用域,其他代码块是不会产生作用域的,也就是说,类似条件判断(if… . .else)、循环语句(for x in data)、异常捕捉(try…catch)等的变量是可以全局使用的。
x=18
if x<46:
b=20
print(b)

全局变量和局部变量

在函数中定义的变量称为局部变量,只在函数内部生效。

def hanshu():
    b=3
    print("函数内部",b)
    print(a)
a=6
hanshu()

在函数外部定义的变量称为全局变量,全局变量的作用域从定义开始到程序结束。

 def hanahu():
    global a
    a+=10
    print("函数内部",a)
a=20
hanahu()
print("函数外部",a)

全局变量是不可变数据类型,函数无法修改全局变量的值

 a=10
def x():
    a=8
    print(a)
x()
print(a)

全局变量是可变数据类型,函数可以修改全局变量的值

 a=10
b=[]
def x():
    a=8
    print(a)
    b=9
x()
print(a)
print(b)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值