python--11 函数和过程

过程(procedure)是简单/特殊并且没有返回值的

函数 有返回值

python 严格来说只有函数没有过程

  >>> def hello():
    ... print('Hello Junjie!')
    ...
  >>> temp = hello()
  Hello Junjie!

  >>> temp
  >>> print(temp)
  None
  >>> type(temp)
  <class 'NoneType'>

python 动态确定类型  python没有变量,只有名字

返回多个值    用一个数据类型封装多个返回的值

  >>> def back():
    ... return [1,'junjie',3.14]
    ...
  >>> back()
  [1, 'junjie', 3.14]
  >>> def back():
    ... return 1,'junjie',3.14
    ...
  >>> back()
  (1, 'junjie', 3.14)

函数变量作用域  变量的可见性

局部变量(Local Variable)  函数中定义的变量,用栈进行存储  方法结束弹栈

全局变量(Grobal Variable) 作用域整个文件

  >>> def discounts(price,rate):
  ... final_price = price * rate
  ... old_price = 88 #这里试图修改全局变量
  ... print('修改后old_price的值是:', old_price)
  ... return final_price
  ...
  >>> old_price = float(input('请输入原价:'))
  请输入原价:999
  >>> rate =float(input('请输入折扣'))
  请输入折扣0.5
  >>> new_price = discounts(old_price,rate)
  修改后old_price的值是: 88
  >>> print('修改后old_price的值是',old_price) 
  修改后old_price的值是 999.0
  >>> print('打折后的价格是',new_price)
  打折后的价格是 499.5

 

  >>> print('试图打印局部变量的值',final_price)
  Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  NameError: name 'final_price' is not defined

全局变量  函数中修改全局变量

  >>> count = 5
  >>> def myFun():
  ... count = 10
  ... print(count)
  ...
  >>> myFun()
  10
  >>> print(count)
  5

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

python会使用屏蔽(Shadowing)去保护 全局变量

试图去修改全局变量时,python会创建一个与全局变量名字一样的变量 局部变量和全局便利存储的位置不一样

global 关键字 函数中修改全局变量

 

  >>> print(count)
  5
  >>> count = 5
  >>> def myFun():
  ... global count
  ... count = 10
  ... print(count)
  ...
  >>> myFun()
  10
  >>> print(count)
  10

posted @ 2017-09-07 17:06  110528844  阅读(182)  评论(0编辑  收藏  举报