day7-1

局部变量与全局变量:

1.前后引用:

 1 import time
 2 
 3 def test1(**kwargs):
 4     print(kwargs)
 5     looger()
 6 
 7 test1(name = 'ri',age = 1)  # NameError: name 'looger' is not defined 注意函数先后引用的问题
 8     
 9 def looger():  # 按格式打印时间
10     "print time"
11     time_formakes = "%Y-%m-%d %X"
12     time_current = time.strftime(time_formakes)
13     print(time_current)
14 
15 # 如果内存中已经存在looger函数,那么可以在任何位置调用,如果没有,则必须在函数定义后调用

2.局部变量和全局变量

 1 def change_name(name):
 2 
 3     print("before name:",name)
 4     name = 'Ri'# 局部变量,这个函数就是这个变量的作用域
 5     print("after name:",name) 
 6     
 7 
 8 name = 'Rich'
 9 change_name(name)
10 print("now name:",name)
11 
12 '''
13 before name: Rich
14 after name: RI
15 now name: Rich
16 '''
17 # 可以把代码理解成一个个层次分明的模块,局部变量在最顶层是全局变量。
18 # 如果在函数内部想定义全局变量,可以使用global 定义  global name1
19 #                                                  name1 = 'sd'
20 

3. 不要试图在函数中改变局部变量为全局变量,否则来回调用时容易出错

1 def change_name():
2     global name
3     name = 'as'
4 
5 change_name()
6 print(name)
7 # as  不要使用这种方法

4.修改列表,集合,字典等数据类型可以在局部改变全局

name = ['sam','xiaoming','wukong']

def change():
    "test"
    name[0] = 'QWER'
    print(name)

change()
print(name)

# =============================================================================
# ['QWER', 'xiaoming', 'wukong']
# ['QWER', 'xiaoming', 'wukong']
# =============================================================================

在子程序中定义的变量成为局部变量,在最高层定义的变量为全局变量

全局变量的作用域是整个程序,局部变量的作用域是定义该变量的子程序

当全局变量与局部变量同名时。在定义局部变量的子程序离,局部变量起作用,其他地方全局变量起作用

 

posted @ 2018-09-29 16:49  杨fj  阅读(76)  评论(0)    收藏  举报