1、
python中定义在函数内部的变量称为局部变量,局部变量只能在局部函数内部生效,它不能在函数外部被引用。
def discount(price,rate):
price_discounted = price * rate
return price_discounted
sale_price = float(input("please input the sale_price:"))
discount_rate = float(input("please input the discount_rate:"))
sell_price = discount(sale_price,discount_rate)
print("sell_price is: %.3f" % sell_price)
## 在以上脚本中, 定义函数discount(),两个形参price和rate。 局部变量为 price、rate 和 price_discounted. 全局变量为 sale_price、discount_rate和 sell_price。
运行效果如下:
please input the sale_price:800
please input the discount_rate:0.5
sell_price is: 400.000
a、尝试在函数外部访问全局变量和局部变量,全局变量可以访问,局部变量不可以访问
>>> sale_price ## 全局变量
800.0
>>> discount_rate ## 全局变量
0.5
>>> sell_price ## 全局变量
400.0
>>> price ## 局部变量
Traceback (most recent call last):
File "<pyshell#45>", line 1, in <module>
price
NameError: name 'price' is not defined
>>> rate ## 局部变量
Traceback (most recent call last):
File "<pyshell#46>", line 1, in <module>
rate
NameError: name 'rate' is not defined
>>> price_discounted ## 局部变量
Traceback (most recent call last):
File "<pyshell#47>", line 1, in <module>
price_discounted
NameError: name 'price_discounted' is not defined
b、尝试在函数内部访问全局变量
def discount(price,rate):
price_discounted = price * rate
print("output globle varable sale_price:",sale_price)
return price_discounted
sale_price = float(input("please input the sale_price:"))
discount_rate = float(input("please input the discount_rate:"))
sell_price = discount(sale_price,discount_rate)
print("sell_price is: %.3f" % sell_price)
please input the sale_price:800
please input the discount_rate:0.5
output globle varable sale_price: 800.0 ##在函数内部可以访问全局变量
sell_price is: 400.000
c、尝试在函数内部修改全局变量
def discount(price,rate):
price_discounted = price * rate
sale_price = 5000 ## 在函数内部修改全局变量
print("new_sale_price:",sale_price) ## 在函数内部输出修改后的变量
return price_discounted
sale_price = float(input("please input the sale_price:"))
discount_rate = float(input("please input the discount_rate:"))
sell_price = discount(sale_price,discount_rate)
print("sell_price is: %.3f" % sell_price)
print("output the varable sale_price:",sale_price) ## 在函数外输出修改后的变量,验证是否改变
please input the sale_price:800
please input the discount_rate:0.5
new_sale_price: 5000 ## 在函数内部返回修改后的变量
sell_price is: 400.000
output the varable sale_price: 800.0 ## 在函数外部返回原始变量
## 在函数内部可以访问全局变量,但是不可以修改全局变量
局部变量只能在函数内调用,不能够在函数外调用; 全局变量可以在函数内访问,全局变量不可以在函数内修改。
全局变量的作用域在整个模块,局部变量的作用域在函数内。