def applejuice(q):
print THE FUNCTION NAME!
Nó sẽ dẫn đến "applejuice" dưới dạng chuỗi.Cách in tên hàm dưới dạng chuỗi trong Python từ bên trong hàm đó
def applejuice(q):
print THE FUNCTION NAME!
Nó sẽ dẫn đến "applejuice" dưới dạng chuỗi.Cách in tên hàm dưới dạng chuỗi trong Python từ bên trong hàm đó
này cũng hoạt động:
import sys
def applejuice(q):
func_name = sys._getframe().f_code.co_name
print func_name
Bạn cần giải thích vấn đề của mình là gì. Bởi vì câu trả lời cho câu hỏi của bạn là:
print "applejuice"
có thể anh ta ngụ ý: def func (anothah_func): in anothah_func's name – wilhelmtell
Vâng, điều đó chắc chắn có thể. Chúng tôi sẽ xem liệu anh ấy có nói vấn đề là gì không. –
def applejuice(**args):
print "Running the function 'applejuice'"
pass
hoặc sử dụng:
myfunc.__name__
>>> print applejuice.__name__
'applejuice'
Ngoài ra, xem how-to-get-the-function-name-as-string-in-python
upvote cho 'myfunc .__ name__' – philshem
import traceback
def applejuice(q):
stack = traceback.extract_stack()
(filename, line, procname, text) = stack[-1]
print procname
Tôi giả định này được sử dụng để gỡ lỗi, vì vậy có lẽ bạn muốn xem xét các thủ tục khác được cung cấp bởi traceback
module. Họ sẽ cho bạn in toàn bộ cuộc gọi stack, dấu vết ngoại lệ vv
Một cách khác
import inspect
def applejuice(q):
print inspect.getframeinfo(inspect.currentframe())[2]
def foo():
# a func can just make a call to itself and fetch the name
funcName = foo.__name__
# print it
print 'Internal: {0}'.format(funcName)
# return it
return funcName
# you can fetch the name externally
fooName = foo.__name__
print 'The name of {0} as fetched: {0}'.format(fooName)
# print what name foo returned in this example
whatIsTheName = foo()
print 'The name foo returned is: {0}'.format(whatIsTheName)
Trang web này đã cho tôi một lời giải thích đàng hoàng về cách hoạt động của sys._getframe.f_code.co_name trả về tên hàm.
http://code.activestate.com/recipes/66062-determining-current-function-name/
Wlecome to SO! hãy suy nghĩ về việc cung cấp giải thích và không chỉ trỏ đến các liên kết bên ngoài. –
Xem http://meta.stackexchange.com/questions/18584/how-to-ask-a-smart-question-on-so/25128#25128 –
Từ câu trả lời mà bạn đã chọn chúng ta có thể kết luận rằng đây thực sự là một bản sao. Thật vậy, một câu hỏi gần như chính xác cùng một tên đã tồn tại: http://stackoverflow.com/questions/251464/how-to-get-the-function-name-as-string-in-python –
Tôi không đồng ý rằng đây là một bản sao của # 251464 - có vẻ như câu hỏi này là ngược lại. –