我想從我正在做的一門課程中獲得一些幫助來理解以下“更高或更低的游戲再現”代碼。
對于函式定義為的第二行代碼: account_name=account["name"]我不明白為什么他們命名為“帳戶”,他們指的是鍵值"name"。當我學習函式時,我認為它說“帳戶”的名稱必須說“資料”,因為這是我們將用來獲取資訊的串列的名稱。雖然我們將定義一個新變數,如account_name=data["name"]. 但看起來我錯了。另一件事是為什么我們將一個值傳遞給函式“格式化資料”,該值在代碼中無處作為“帳戶”。
所以想知道當串列名稱完全不同時,函式如何獲取所有必要的資訊,它是如何獲取值的。
每一個建議都值得贊賞。
from game_data import data
#function that converts the data to a certain format to display
def format_data(account):
account_name=account["name"]
account_follower=account["follower_count"]
account_desc=account["description"]
account_country=account["country"]
return f"{account_name} {account_follower} {account_desc} {account_country}"
#randomly chooses one of the dictionaries from the list
account_a=random.choice(data)
account_b=random.choice(data)
if account_a==account_b:
account_b=random.choice(data)
print(f"compare A: {format_data(account_a)}")
print(f"compare B: {format_data(account_b)}")
uj5u.com熱心網友回復:
我的猜測是,鑒于這一行:from game_data import data這使得變數data可用,即list.
行account_a=random.choice(data),然后隨機選擇其中一項。
行:print(f"compare A: {format_data(account_a)}")然后呼叫format_data()函式向它發送引數account_a。
現在該format_data()函式第一次使用引數運行,該引數account參考了所參考的同一物件account_a。
所有這些函式都是為了挑選出 的一些元素dict并將它們重新格式化為回傳的字串。
這個格式化的字串然后被上面列印出來: print(f"compare A: {format_data(account_a)}")
您感到困惑的是呼叫函式和引數名稱。
哪里有 call: format_data(account_a),python 只是做了一個賦值:
account = account_a作為呼叫的一部分,該函式format_data()現在具有引數account。
uj5u.com熱心網友回復:
在您給出的示例中,該行:
def format_data(account):
告訴我們有一個方法接受一個引數,在這個例子中被稱為“帳戶”。引數可以命名為任何名稱(有一些例外),例如“variable”、“foo”或“x”。然而,給它一個有意義的名字是很有用的,在這種情況下,他們已經使用了“帳戶”。這個名稱“帳戶”在整個函式中使用,它作用于首先呼叫該函式的任何傳入的任何內容。
值得注意的是,變數“account”僅在該函式的作用域內。如果您嘗試在函式之外訪問“帳戶”,則會出現錯誤。這就是變數作用域的概念出現的地方,如果您在線搜索,您可以閱讀更多相關資訊。
如果您選擇為函式使用變數名稱“data”,那將是可能的,但實際上可能會更令人困惑,因為會有兩個變數,都稱為“data”但具有不同的范圍。一個在函式呼叫的范圍內,一個在腳本的范圍內。所以最好不要這樣使用變數名,而是選擇不同的名稱,以避免混淆和意外錯誤。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/318292.html
上一篇:如何使用由python中的文本檔案形成的嵌套字典中的用戶名調出特定字典
下一篇:numpy陣列的反向整形
