def animal_name(animal):
# here be dragons
return some_string
cat = 5
print(animal_name(cat)) # prints "cat"
一个报价从弗雷德里克Lundh开发(在comp.lang.python)是 特别 适用于本案。
获得在门廊上找到的那只猫的名字的方法相同:猫(对象)本身无法告诉您它的名字,并且它并不在乎–因此,找出猫叫的唯一方法是询问您所有的邻居(命名空间),如果它们是他们的猫(对象)…
…。如果您发现它有很多名字,或者根本没有名字,请不要感到惊讶!
只是为了好玩,我尝试animal_name
使用sys
和gc
模块来实现,发现该邻域还通过多个名称调用了您亲切地称为“ cat”的对象,即文字整数5:
>>> cat, dog, fish = 5, 3, 7
>>> animal_name(cat)
['n_sequence_fields', 'ST_GID', 'cat', 'SIGTRAP', 'n_fields', 'EIO']
>>> animal_name(dog)
['SIGQUIT', 'ST_NLINK', 'n_unnamed_fields', 'dog', '_abc_negative_cache_version', 'ESRCH']
>>> animal_name(fish)
['E2BIG', '__plen', 'fish', 'ST_ATIME', '__egginsert', '_abc_negative_cache_version', 'SIGBUS', 'S_IRWXO']
>>> mantis_shrimp = 696969; animal_name(mantis_shrimp)
['mantis_shrimp']
因此,总而言之: