01/10/2018, 11:43

Tạo một hàm theo cách không bình thường

Hôm nay, ngồi vu vơ bên cửa sổ với những hạt mưa rơi, em bỗng nhớ về Xà Ngữ. Em nghĩ ra một câu đố muốn thử thách mọi người. Đó là, em có một hàm như thế này

def func(*args, **kwargs):
    print('I love you wờ wú wờ wú wờ')
    print('Đừng dùng lambda nhé!')
    return

Bây giờ, em cũng muốn tạo ra hàm func y chang như vậy, nhưng không được có đoạn này

def func(*args, **kwargs):

HK boy viết 13:50 ngày 01/10/2018

Không biết có tính không.

func = exec("print('I love you wờ wú wờ wú wờ'); print('Đừng dùng lambda nhé!')")
# bonus: func = exec("print('Không thèm dùng lambda')")
Henry viết 13:56 ngày 01/10/2018

Nó là hàm, thế nên em có thể dùng đi dùng lại nó nhiều lần chứ anh. Thêmđiều nữa, em còn pass được một nùi *args, **kwargs nữa.

HK boy viết 13:44 ngày 01/10/2018

Này thì dùng đi dùng lại nhiều lần

def not_fun():
    print('wtf')
    global func
    exec(func)


global func
func = "print('I love you wờ wú wờ wú wờ'); print('Đừng dùng lambda nhé!')"

not_fun()

Nhưng mà hàm này thì lấy đâu ra *args, **kwargs nhỉ?

明玉 viết 13:51 ngày 01/10/2018

Thế này được không

exec("def " + """func(*args, **kwargs):
    print('I love you wờ wú wờ wú wờ')
    print('Đừng dùng lambda nhé!')
    return

""")
Henry viết 13:50 ngày 01/10/2018

Chạy thử đi đã

Hung viết 13:59 ngày 01/10/2018

Giống vầy.

stackoverflow.com
Migol

Python: changing methods and attributes at runtime

python, reflection, runtime
asked by Migol on 10:39PM - 07 Jun 09

Mình đã từng làm với các magic method để build framework bên PHP. Nếu chỉ làm app thì đừng nên sử dụng, ngay cả khi sử dụng để build lib thì code cũng khó đọc.

Bài liên quan
0