# coding=utf-8

#             v
# 局部变量:函数内部的变量,全局变量:函数外部的变量
# java中的类,方法中的局部变量与全局变量类似

# 变量的生命周期:被创建到被系统回收的过程
# 变量的生命周期内才能使用变量
# 函数执行时才被创建,结束后就会被系统回收
# 局部变量在生命周期内,可以用来存储函数内部临时使用的数据


def demo1():
    # 定义一个局部变量
    num = 10
    print ("在demo1函数内部的变量是%d" % num)


def demo2():
    pass


# 在函数内部定义的变量,不能再其他位置使用
# print("%d%num)
demo1()
demo2()

# 定义全局变量(模块中的全局变量),在函数内可以被调用
num1 = 10


def demo3():
    print ("demo3==>%d" % num1)


demo3()

# Python中,函数能访问全局变量,
# 一般情况下:
# 不能通过赋值语句修改,只会在函数内部定义一个(新的)局部变量
# 如果需要强制修改全局变量:
# global关键字对变量进行声明,从而对全局变量进行操控

# _________________________________________-______________
# 全局变量的位置生效位置:函数调用前
# 推荐位置:模块中的所有全局变量都应该定义在所有函数的上方
# 保证所有函数都能访问到每一个全局变量

gl_num = 10


def demo():
    print ("%d" % gl_num)
    print ("%s" % title)


# 再定义一个全局变量
title = "只要在函数调用前定义的全局变量都可以正常使用"
demo()
# 在调用函数外部定义的全局变量不会被定义
name = "小明"

# _______________________________________________
# 全局变量的起名(全局变量与局部变量的起名如果相同,pycharm会在下面增加灰色波浪线)
# 一般我们的解决方案可以是在全局变量前加gL:如,gl_name
