Python:函数2——变量的作用域 、 返回值

一、函数和过程

一般来讲,函数是有返回值的,过程是简单的、特殊并且没有返回值得。

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
>>> 




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值