4、知识点补充

# 4、知识点补充
#1,装饰器:
#装饰器的本质是闭包。
# 开放封闭原则。
#
'''
1.对扩展是开放的
    为什么要对扩展开放呢?
    我们说,任何一个程序,不可能在设计之初就已经想好了所有的功能并且未来不做任何更新和修改。所以我们必须允许代码扩展、添加新功能。
2.对修改是封闭的
    为什么要对修改封闭呢?
    就像我们刚刚提到的,因为我们写的一个函数,很有可能已经交付给其他人使用了,如果这个时候我们对其进行了修改,
很有可能影响其他已经在使用该函数的用户。
装饰器完美的遵循了这个开放封闭原则。

'''

# 2、
# count = 1
# 函数内部如果有变量名与全局变量名相同且对此变量进行改变,
# Python 就会将你引用的那个变量视为局部定义的变量,但是局部没定义,
# 则他会报错。
# def func1():
# count1 = count + 1
# print(count)
# func1()
#
# def func1():
# count = 3
# def inner():
# count = count + 1
# inner()
# print(count)
# func1()


# 3 global + 变量

#函数中如果使用global + 变量 必须是第一次使用这个变量。
# flag = True
# def func1():
#
# if flag:
# print(333)
# global flag
# flag = False
# func1()
# flag = True
# while flag:
# print(333)
# flag = False
# print(222)
#for if while 没有开辟临时空间。


# 4、globals() locals()
#globals() locals()
# locals :函数会以字典的类型返回 当前位置 的全部 局部变量。
#
# globals:函数以字典的类型返回全部全局变量。
#
c = 4
def extendList(val,list=[]):
list.append(val)
# print(globals())
print(locals()) # {'list': [1], 'val': 1}
def inner():
a = 3
b = 4
print(locals())
inner()
return list
ret = extendList(1)

print(globals()) # 'ret': [1]
# print(locals())
posted @ 2018-05-16 20:07  龙的传人123  阅读(81)  评论(0)    收藏  举报