Python:函数2——变量的作用域 、 返回值
2017-05-04 18:31
537 查看
一、函数和过程
一般来讲,函数是有返回值的,过程是简单的、特殊并且没有返回值得。python严格来说只有函数没有过程:因为当没有return时,默认返回None
二、返回值
python返回值得类型为动态的!形参类型也是动态的返回多个值:
>>> def back(): ... return [1, 'xiaoyi', 3.14] ... >>> back() [1, 'xiaoyi', 3.14] >>> def back(): ... return 1, 'xiaoyi', 3.14 ... >>> back() (1, 'xiaoyi', 3.14)
三、变量的作用域
也就是变量的可见性!局部变量、全局变量:函数里边的变量是局部变量;
final_price、price、rate是discounts里的局部变量
原理:python在调用这个函数的时候,利用栈进行存储,把函数所需要的代码和变量都扔到这个栈里边去,当执行完这个函数的时候,这个函数会被自动的删除,对应栈的数据会被自动的清空,所以函数外是无法访问到函数内的变量的
阴影部分的定义的变量old_price、rate、new_price是全局变量,函数内部可以访问全局变量
在函数内去试图修改全局变量的话,python会自动创建一个新的局部变量代替,名字跟全局变量是一模一样的(屏蔽)注意,在函数内修改全局变量前访问全局变量会报错。
>>> count = 5 >>> def MyFunc(): ... print(count) ... count = 10 ... print(count) ... >>> MyFunc() Traceback (most recent call last): File "<stdin>", line 1, in <module> File "<stdin>", line 2, in MyFunc UnboundLocalError: local variable 'count' referenced before assignment >>>
因此建议不要试图在函数内去修改全局变量!也有解决办法:使用global关键字
>>> def MyFunc(): ... global count ... count = 10 ... print(10) ... >>> count = 5 >>> MyFunc() 10 >>> count 10
>>> count 10 >>> def MyFunc(): ... print(count) ... global count ... count = 10 ... print(count) ... <stdin>:3: SyntaxWarning: name 'count' is used prior to global declaration >>> count = 5 >>> MyFunc() 5 10 >>>
相关文章推荐
- linux shell 自定义函数方法(定义、返回值、变量作用域)
- Python模块中的变量和函数的作用域
- python函数-变量作用域
- Python(五) 包、模块、函数与变量作用域
- linux shell 自定义函数方法(定义、返回值、变量作用域)
- python基础----函数的定义和调用、return语句、变量作用域、传参、函数嵌套、函数对象、闭包、递归函数
- python[变量作用域-函数-闭包-装饰器-生成器]
- python 中模块(model)概念的引入 以及 函数变量的作用域
- python 函数 本地变量 函数的命名空间 变量的作用域
- JavaScript 函数总体概述(函数声明/参数传递/返回值/加载/变量和作用域/变量声明提升/匿名函数/回调函数)
- 王亟亟的Python学习之路(10)-函数对象的作用域,函数作为返回值,闭包
- Python函数与变量作用域
- C语言学习4: 函数返回值与传入参数,关于函数值传递和类型隐性转换,变量不同的作用域,static变量,多文件编译例如两个C文件,显示函数调用语句跳转,递归,斐波那契数列,多文件编译相同变量的问题。
- python学习笔记三:函数及变量作用域
- javascript和python函数中变量作用域的区别
- python --- 变量和函数的作用域
- Python函数中的变量和函数返回值
- python函数学习与变量作用域
- python的本地变量,全局变量,函数的作用域,嵌套函数引用包装函数
- linux shell学习笔记二---自定义函数(定义、返回值、变量作用域)介绍