我正在尝试以全大写字母打印字符串。当我运行print命令时,它会打印x的类型和位置。
为什么打印操作而不是结果?
x = 'bacon'
x = x.upper
print x
>>>
<built-in method upper of str object at 0x02A95F60>
答案 0 :(得分:4)
upper
(以及所有其他方法)类似于“功能可以使用”,就像你可以这样做:
x = 'bacon'
x = x.upper
print x()
但最常见的是,我认为你想要的方式是:
x = 'bacon'
x = x.upper()
print x
使用lambda的“荒谬”示例:
upper_case = lambda x: x.upper()
print(upper_case) # <function <lambda> at 0x7f2558a21938>
print(upper_case('bacon')) # BACON
答案 1 :(得分:3)
Python中的所有内容都是一个对象,包括函数和方法。 x.upper
是upper
的{{1}}属性,恰好是一个函数对象。 x
是尝试将该属性称为函数的结果,因此您尝试执行
x.upper()
顺便说一下,你可以尝试在Python中调用任何对象,而不仅仅是函数。它并不总是有效,但语法是合法的。你可以做到
print x.upper()
甚至
x = 5
x()
但当然你会得到一个错误(在两种情况下完全相同)。但是,您可以实际将对象作为函数调用,只要它们定义5()
方法(正常函数可以)。您的示例实际上可以重写为
__call__