python - শুধুমাত্র ক্লোজার ফাংশন প্রদত্ত ভেরিয়েবলের উপরে কীভাবে অ্যাক্সেস করবেন?



python-3.x closures (1)

নীচে (নীচে কোড 10 ফেরত)

func.__closure__[0].cell_contents

এই প্রশ্নের ইতিমধ্যে এখানে একটি উত্তর আছে:

নিম্নলিখিত উদাহরণে:

def speak(volume):
    def whisper(text):
        print(text.lower() + ('.' * volume))
    def yell(text):
        print (text.upper() + ('!' * volume))
    if volume > 1:
        return yell
    elif volume <= 1:
        return whisper


func = speak(volume=10)
func('hello')
HELLO!!!!!!!!!! # <== obviously `10` is stored in `func` somewhere

func দেওয়া হয়েছে, আমি কীভাবে "ভলিউম" পাব? func নেমস্পেসের মধ্যে এমন কিছু আছে যা 10 এর মান দেয়? আমি ভেবেছিলাম সম্ভবত এটি func.__globals__ মধ্যে থাকবে func.__globals__ বা func.__dict__ তবে এটি func.__dict__ নয়।





closures