簡體   English   中英

在python中以函數參數命名的列表

[英]list named with a function argument in python

我覺得這可能是我應該知道的,但我現在無法想到。 我試圖得到一個函數來建立一個列表,其中列表的名稱是函數中給定的參數;

例如

def make_hand(deck, handname):
    handname = []
    for c in range(5):
        handname.append(deck.pop())
    return handname

    # deck being a list containing all the cards in a deck of cards earlier

問題是,當我希望創建手時,無論用戶輸入什么作為手名,它都會創建一個名為手名的列表。

有人可以幫忙嗎? 謝謝

您可以保留一個字典,其中的鍵是手的名稱,值是列表。

然后,您只需說出dictionary [handname]即可訪問特定的手。 遵循以下原則:

hands = {} # Create a new dictionary to hold the hands.
hands["flush"] = make_hand(deck) # Generate some hands using your function.
hands["straight"] = make_hand(deck) # Generate another hand with a different name.
print hands["flush"] # Access the hand later.

盡管您可以在運行時使用exec (如sykora所建議的那樣)或通過對對象的localsglobalssetattr進行干預來創建具有任意名稱的globals ,但您的問題有些疑問。

一個對象(幾乎所有東西,從整數到具有1000個成員的類)都只是一塊內存。 它沒有名字 ,它可以有任意多的名稱,並且所有名稱被視為平等的:他們只是介紹一些對象的引用,並防止它被收集。

如果要以程序用戶為對象提供用戶可見的名稱的方式命名項目,則應使用字典將對象與名稱相關聯。

您使用的用戶提供的變量名的方法還有其他嚴重的含義:*如果用戶提供了現有變量的名稱該怎么辦? *如果用戶提供了無效的名稱怎么辦?

您正在引入一個泄漏的抽象 ,因此,除非對於程序的目的而言,用戶可以指定一個新的變量名真的非常重要,否則用戶不必擔心如何存儲對象-不會出現有看似奇怪的限制。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM