Friday, 12 July 2013

[Python] Tạo và gọi function on-fly

Kế tiếp bài này : http://www.familug.org/2013/07/python-viet-fucntion-tra-ve-function.html

Làm thế nào để tạo 1 function và gọi nó trong lúc code đang chạy.

Ví dụ bạn có 3 từ  "danh" "dam" "da", làm sao để tạo được 3 hàm với 3 cái tên như mong đơi. Kiểu như:
for fname in "danh", "dam", "da":
     tao_ham(fname)

Ví dụ sau thực hiện tạo và gọi hàm on-fly (tức là ngay trong khi code  đang chạy)


https://github.com/familug/FAMILUG/blob/master/Python/onflyfunc.py

Bạn có được thứ gần giống như mong đợi. Dùng 1 dictionary lưu tên hàm và gán cho nó giá trị là hàm sẽ được gọi:


#!/usr/bin/env python2
'''
Simple example creates functions and call them on-fly
'''
def create_func(name):
    def print_name():
        print "hello", name
    return print_name

funcs = {i: create_func(i) for i in ('Pichu', 'Pikachu', 'Raichu')}

for fname in funcs:
    print fname
    funcs[fname]()