课时19:函数:我的地盘听我的

目录:

def discounts(price,rate):

  一、函数和过程

    final_price = price * rate#原价乘以折扣率

  二、再谈谈返回值

    #old_price = 88 #这里试图修改变量

  三、函数变量的作用域

    #print('修改后old_price的值是:',old_price)

  四、课时19课后习题及答案

    return final_price

 

    上面一段都是局部变量,下面打印不了局部变量

******************

    下面是全局变量,可以在上面打印全局变量,可以访问,但不能修改

一、函数和过程

old_price = float(input('请输入原价:'))

******************

rate = float(input('请输入折扣率:'))

Python严格来说,只有函数,没有过程。此话怎讲?

#print('修改后old_price的值是:', old_price)

>>> def hello():
    print("DC love ZWW")


>>> hello()
DC love ZWW
>>> temp = hello()
DC love ZWW
>>> temp
>>> print(temp)
None
>>> print(hello())
DC love ZWW
None
>>> type(temp)
<class 'NoneType'>
>>> type(hello())
DC love ZWW
<class 'NoneType'>

new_price = discounts(old_price,rate)

调用print(hello())之后打印了两行字,第一行,我们知道时hello()函数执行的,第二行的None是怎么回事呢?当不写return语句的时候,默认Python会认为函数是return None的。所以说Python所有的函数都有返回值。

print('打折后价格是:',new_price)

 

>>> count = 5 #全局变量

*********************

>>> def MyFun():

二、再谈谈返回值

count = 10 #修改这里,不会影响全局变量

*********************

print(count)

在许多编程语言中,我们说一个函数是整型,其实我们的意思是指这个函数会返回一个整型的返回值。而Python不这么干,Python可以动态确定函数的类型,而且函数还能返回不同类型的值。还记得“Python只有变量,没有名字”这句话吗?只需知道Python会返回一个东西,然后拿来用就可以了。另外,Python似乎还可以同时返回多个值。

>>> MyFun()

>>> def test():
    return [1,'小甲鱼',3.14]

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

10

Python可以利用列表打包多种类型的值一次性返回。当然,也可以直接用元组的形式返回多个值:

>>> print(count)

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

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

5

 

>>> def MyFun():

**************************

global count #用global关键字修改全局变量

三、函数变量的作用域

count = 10

**************************

print(count)

 变量的作用域也就是平常所说的变量可见性,一般的编程语言都有局部变量和全局变量之分。分析以下代码:

>>> MyFun()

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)

10

程序的执行结果如下:

>>> print(count)

请输入原价:80
请输入折扣率:0.75
打折后价格是: 60.0

10

来分析一下代码:在函数discounts()中,两个参数是price和rate,还有一个是final_price,它们都是discounts()函数中的局部变量。为什么称之为局部变量呢?不妨修改下代码:

支持函数嵌套

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)

>>> def fun1():

 程序走起,报错....

print('fun1()正在被调用...')

请输入原价:80
请输入折扣率:0.75
打折后价格是: 60.0
Traceback (most recent call last):
  File "C:Users14158Desktoplalallalalal.py", line 12, in <module>
    print('这里试图打印局部变量final_price的值:',final_price)
NameError: name 'final_price' is not defined

def fun2():

 错误原因:final_price没有被定义过,也就是说,python找不到final_price这个变量。这是因为final_price只是一个局部变量,它的作用范围只在它的地盘上----discounts()函数的定义范围内-----有效,出了这个范围,就不再属于它的地盘了,它将什么都不是。

print('fun2()正在被调用...')

总结一下:在函数里边定义的参数以及变量,都称为局部变量,出了这个函数,这些变量都是无效的。事实上的原理是,Python在运行函数的时候,这里在调用这个函数的时候,利用栈进行存储,把函数里的变量代码都扔到栈里面去,当执行完该函数后,函数中的所有数据都会被自动删除。所以在函数外边是无法访问到函数内部的局部变量的。

fun2()

本文由金沙官网线上发布于编程,转载请注明出处:课时19:函数:我的地盘听我的

您可能还会对下面的文章感兴趣: