程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

Python進階系列(六)

編輯:Python

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關

鍵字,它只會讓生活變得艱難,因為它引入了多余的變量到全局作用域了。

多個return值

那如果你想從一個函數裡返回兩個變量而不是一個呢?

新手們有若干種方法。最著名的方法,是使用global關鍵字。讓我們看下這個沒用的例子:

def profile():
    global name
    global age
    name = "Danny"
    age = 30
profile()
print(name)
# Output: Danny
print(age)
# Output: 30

注意: 不要試著使用上述方法。重要的事情說三遍,不要試著使用上述方法!

有些人試著在函數結束時,返回一個包含多個值的tuple(元組),list(列表)或

者dict(字典),來解決這個問題。這是一種可行的方式,而且使用起來像一個黑魔法:

def profile():
    name = "Danny"
    age = 30
    return (name, age)
profile_data = profile()
print(profile_data[0])
# Output: Danny
print(profile_data[1])
# Output: 30

或者按照更常見的慣例:

def profile():
    name = "Danny"
    age = 30
    return name, age

這是一種比列表和字典更好的方式。不要使用global關鍵字,除非你知道你正在做什麼。global也許在某些場景下是一個更好的選擇(但其中大多數情況都不是)。


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved