Untuk memilih pembolehubah berdasarkan input rentetan, terdapat beberapa pendekatan yang berdaya maju.
Kamus
Kamus biasa selalunya sesuai untuk ini tugas:
get_ext = {'text': ['txt', 'doc'], 'audio': ['mp3', 'wav'], 'video': ['mp4', 'mkv']} get_ext['video'] # returns ['mp4', 'mkv']
Fungsi
Jika fungsi diperlukan atas sebab tertentu, anda boleh menetapkan kepada kaedah get kamus:
get_ext = get_ext.get # Equivalent to get_ext = lambda key: get_ext.get(key) get_ext('video') # returns ['mp4', 'mkv']
Ini akan mengembalikan Tiada untuk kunci yang tidak diketahui secara lalai. Untuk menaikkan KeyError sebaliknya, tetapkan kepada get_ext.__getitem__:
get_ext = get_ext.__getitem__ # Equivalent to get_ext = lambda key: get_ext.__getitem__(key) get_ext('video') # returns ['mp4', 'mkv']
Nilai Lalai Tersuai
Anda boleh melaksanakan nilai lalai tersuai dengan membungkus kamus dalam fungsi:
def get_ext(file_type): types = {'text': ['txt', 'doc'], 'audio': ['mp3', 'wav'], 'video': ['mp4', 'mkv']} return types.get(file_type, [])
Mengoptimumkan
Untuk mengelak daripada mencipta semula kamus pada setiap panggilan fungsi, anda boleh menggunakan kelas:
class get_ext(object): def __init__(self): self.types = {'text': ['txt', 'doc'], 'audio': ['mp3', 'wav'], 'video': ['mp4', 'mkv']} def __call__(self, file_type): return self.types.get(file_type, []) get_ext = get_ext()
Ini membolehkan pengubahsuaian mudah jenis fail yang diiktiraf:
get_ext.types['binary'] = ['bin', 'exe'] get_ext('binary') # returns ['bin', 'exe']
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Memilih Pembolehubah dalam Python Menggunakan Input Rentetan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!