Python的函数与过程

Python的函数与过程

函数(Function)有返回值。

过程(procedure)是简单、特殊并且没有返回值的函数。

>>> def hello():
	print('Hello World!')

	
>>> temp = hello()
Hello World!
>>> temp
>>> print(temp)
None
>>> type(temp)
<class 'NoneType'>
>>> def back():
	return[1,'小甲鱼',3.14]

>>> back()
[1, '小甲鱼', 3.14]

>>> def back1():
	return 1,'小甲鱼',3.14

>>> back1()
(1, '小甲鱼', 3.14)

变量分为局部变量(Local Variable)和全局变量(Global Variable)

def discounts(price,rate):
    final_price = price * rate
    return final_price

old_price = float(input('请输入原价:'))
rate = float(input('请输入折扣率:'))
new_price = discounts(old_price,rate)
print('打折后价格是:',new_price)

请输入原价:100
请输入折扣率:0.8
打折后价格是: 80.0

上面代码中,函数discounts()中的price、rate、final_price是局部变量;假如要在函数外去访问这些局部变量可以访问到吗?

def discounts(price,rate):
    final_price = price * rate
    return final_price

old_price = float(input('请输入原价:'))
rate = float(input('请输入折扣率:'))
new_price = discounts(old_price,rate)
print('打折后价格是:',new_price)
print('这里我们想访问局部变量final_price',final_price)

请输入原价:200
请输入折扣率:0.8
打折后价格是: 160.0
Traceback (most recent call last):
  File "E:/pythonPractice/discounts.py", line 9, in <module>
    print('这里我们想访问局部变量final_price',final_price)
NameError: name 'final_price' is not defined

我们可以看到程序会报错,所以在函数外是访问不到的。

old_price、rate、new_price是全局变量,它们都是在函数外面定义的;那么在函数内部可以访问到这些全局变量吗?

def discounts(price,rate):
    final_price = price * rate
    print('这里我们试图访问全局变量old_price的值',old_price)
    print('这里我们想访问全局变量new_price的值',new_price)
    return final_price

old_price = float(input('请输入原价:'))
rate = float(input('请输入折扣率:'))
new_price = discounts(old_price,rate)
print('打折后价格是:',new_price)

请输入原价:100
请输入折扣率:0.8
这里我们试图访问全局变量old_price的值 100.0
Traceback (most recent call last):
  File "E:/pythonPractice/discounts.py", line 9, in <module>
    new_price = discounts(old_price,rate)
  File "E:/pythonPractice/discounts.py", line 4, in discounts
    print('这里我们想访问全局变量new_price的值',new_price)
NameError: name 'new_price' is not defined

我们可以看到是可以访问全局变量的,但是是在函数调用前的全局变量

但是,不可以在函数里随意改变全局变量的值

def discounts(price,rate):
    final_price = price * rate
    #print('这里我们试图访问全局变量old_price的值',old_price)
    old_price = 50
    print('修改后的old_price的值1是:',old_price)
    return final_price

old_price = float(input('请输入原价:'))
rate = float(input('请输入折扣率:'))
new_price = discounts(old_price,rate)
print('修改后的old_price的值2是:',old_price)
print('打折后价格是:',new_price)

请输入原价:800
请输入折扣率:0.8
修改后的old_price的值1是: 50
修改后的old_price的值2是: 800.0
打折后价格是: 640.0

我们可以看到,如果想在函数内改变全局变量的值,Python会在函数内创建一个和全局变量一样名字的局部变量,全局变量仍然不变。

猜你喜欢

转载自blog.csdn.net/liu_hong_yan/article/details/114930840
今日推荐