局部变量(Local Variable)
- 局部变量:从字面理解就是只能在局部使用的变量,也就是说只能在特定的函数或子程序中可以访问的变量,它的作用域就只在此函数的内部。对于西门子PLC来说,在FC或FB预先定义一些局部变量,比如在接口数据区,在主程序调用时,可以为输入、输出等接口变量提供参数。所以说,当你再FC1中定义的局部变量,在FC2中未定义的情况下是不能直接调用的。
- 只在定义它的函数内有效,只是程序仅分配一次内存,函数返回后,该变量不会消失;静态局部变量的生存期虽然为整个工程,但是其作用仍与局部变量相同,即只能在定义该变量的函数内使用该变量。退出该函数后, 尽管该变量还继续存在,但不能使用它。
全局变量(Global Variable)
-
全局变量:顾名思义,就是对于整个程序都可以使用的变量,任何地方可以使用的变量,当然前提是你必须要定义变量,它定义在函数或子程序的外部,又可以称之为外部变量。比如对于西门子来说I、Q、M等变量。
-
静态全局变量:只在定义它的文件内有效,效果和全局变量一样,不过就在本文件内部。
注意:全局变量和静态变量如果没有手工初始化,则由编译器初始化为0。局部变量的值不可知。
静态局部变量与全局变量最明显的区别就在于:全局变量在其定义后所有函数都能用,但是静态局部变量只能在一个函数里面用。
例子
源码:
def discounts(price, rate):
final_price = price * rate
old_price = 88 #这里试图修改全局变量
print('修改后old_price的值是:', old_price)
return final_price
old_price = float(input('请输入原价:'))
rate = float(input('请输入折扣率:'))
new_price = discounts(old_price, rate)
print('修改后old_price的值是:', old_price)
print('打折后价格是:', new_price)
global关键字
global可将局部变量声明为全局变量