变量的作用域

'''
全局变量
1.一个文件中没有函数,该文件中的变量时全局变量吗!若是,他能被修改,若不是,它不在函数内?!
是全局变量,全局变量不是不能更改,可以更改。而是在函数内改时要么在外部局部变量失效,要么需要glable引入全局变量。
2.函数1中有一个函数2,一个变量l,在函数2中能够使用l吗?
不能,因为次变量不存在函数2内
'''
# # 函数内,执行过不允许修改,要加global
# 1.不可变数据:基本数据类型全局变量在函数内一般修改会报错。
# 原因是在修改时函数内部变量与全局变量重名,该变量变成了局部变量,使用时在声明前会报错。
#           但若在声明后使用虽然不会报错,但在函数外部调用时,改变不起作用。因此修改时用globle引入全局变量,组合数据类型也是
# 2.可变数据类型:复杂数据类型内部的数据如list[1]\set{1}可以修改,但不能直接修改该复杂数据
# 总结:函数外部访问全局变量,不能访问局部变量;\
#          函数内部访问的变量与全局变量重名时,引入globle后该变量是全局变量,没有引入时,该变量是局部变量
#       变量的使用一定要放在声明之前
#       全局变量的改变执行后(在函数内改变时需要执行该函数),无论在哪里调用该变量,都已经发生了变化\
#             若没有执行,或者在执行之前不会发生变化。
# 局部变量:定义在函数内
# 全局变量:定义在函数外
# name_all="k"
# def i():
#     name="j"
#     print("name_all   2",name_all)#name_all   2 k
#     print("局部变量name",name)#局部变量name j
# # print(name)局部变量外部访问出红线
# i()
# print("name_all   1",name_all)#name_all   1 k


#1
# name_all="k"
# def i():
#     print("name_all   2",name_all)#有红线,但运行时不会报错原因是没有调用该函数
#     name_all="j"
#     print("name_all   2",name_all)
# print("name_all   1",name_all)#name_all   1 k
#2
# name_all="k"
# def i():
#     print("name_all   2",name_all)#有红线,运行时报错
#     name_all="j"
#     print("name_all   2",name_all)
# i()#local variable 'name_all' referenced before assignment 赋值前引用的局部变量'name_all'
# print("name_all   1",name_all)#name_all   1 k
#

# name_all="k"
# def i():
#
#     global name_all
#     print("name_all   2", name_all)#name_all   2 k
#     name_all="j"
#     print("name_all   2",name_all)
# i()#name_all   2 j
# print("name_all   1",name_all)#name_all   1 j

# name_all="k"
# def i():
#     print("name_all   2", name_all)#name 'name_all' is used prior to global declaration name 'name_all'用于全局声明之前
#     global name_all
#     name_all="j"
#     print("name_all   2",name_all)
# i()
# print("name_all   1",name_all)
# 2.可变数据
# name_all=[]
# def i():
#     print("name_all   2", name_all)#name_all   2 []
#     name_all.append("l")
# i()
# print("name_all   1",name_all)#name_all   1 ['l']

# name_all=[]
# def i():
#     print("name_all   2", name_all)#local variable 'name_all' referenced before assignment
#     name_all=list()
#     print(name_all)
# i()
# print("name_all   1",name_all)#


 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值