# Global和Return
# Global和Return
你也許遇到過, python中一些函數在最尾部有一個`return`關鍵字。你知道它是干嘛嗎?它和其他語言的`return`類似。我們來檢查下這個小函數:
~~~
def add(value1, value2):
return value1 + value2
result = add(3, 5)
print(result)
# Output: 8
~~~
上面這個函數將兩個值作為輸入,然后輸出它們相加之和。我們也可以這樣做:
~~~
def add(value1,value2):
global result
result = value1 + value2
add(3,5)
print(result)
# Output: 8
~~~
那首先我們來談談第一段也就是包含`return`關鍵字的代碼。那個函數把值賦給了調用它的變量(也就是例子中的result變量)。
大多數境況下,你并不需要使用`global`關鍵字。然而我們也來檢查下另外一段也就是包含`global`關鍵字的代碼。那個函數生成了一個`global`(全局)變量result。
`global`在這的意思是什么?`global`變量意味著我們可以在函數以外的區域都能訪問這個變量。讓我們通過一個例子來證明它:
~~~
# 首先,是沒有使用global變量
def add(value1, value2):
result = value1 + value2
add(2, 4)
print(result)
# Oh 糟了,我們遇到異常了。為什么會這樣?
# python解釋器報錯說沒有一個叫result的變量。
# 這是因為result變量只能在創建它的函數內部才允許訪問,除非它是全局的(global)。
Traceback (most recent call last):
File "", line 1, in
result
NameError: name 'result' is not defined
# 現在我們運行相同的代碼,不過是在將result變量設為global之后
def add(value1, value2):
global result
result = value1 + value2
add(2, 4)
print(result)
6
~~~
如我們所愿,在第二次運行時沒有異常了。在實際的編程時,你應該試著避開`global`關鍵字,它只會讓生活變得艱難,因為它引入了多余的變量到全局作用域了。
- 簡介
- 序
- 譯后感
- 原作者前言
- *args 和 **kwargs
- *args 的用法
- **kwargs 的用法
- 使用 *args 和 **kwargs 來調用函數
- 啥時候使用它們
- 調試 Debugging
- 生成器 Generators
- 可迭代對象(Iterable)
- 迭代器(Iterator)
- 迭代(Iteration)
- 生成器(Generators)
- Map和Filter
- Map
- Filter
- set 數據結構
- 三元運算符
- 裝飾器
- 一切皆對象
- 在函數中定義函數
- 從函數中返回函數
- 將函數作為參數傳給另一個函數
- 你的第一個裝飾器
- 使用場景
- 授權
- 日志
- 帶參數的裝飾器
- 在函數中嵌入裝飾器
- 裝飾器類
- Global和Return
- 多個return值
- 對象變動 Mutation
- slots魔法
- 虛擬環境
- 容器 Collections
- 枚舉 Enumerate
- 對象自省
- dir
- type和id
- inspect模塊
- 推導式 Comprehension
- 列表推導式
- 字典推導式
- 集合推導式
- 異常
- 處理多個異常
- finally從句
- try/else從句
- lambda表達式
- 一行式
- For - Else
- else語句
- open函數
- 目標Python2+3
- 協程
- 函數緩存
- Python 3.2+
- Python 2+
- 上下文管理器
- 基于類的實現
- 處理異常
- 基于生成器的實現