Python:在.upper之后打印值

时间:2016-08-25 15:28:40

标签: python python-2.7

我正在尝试以全大写字母打印字符串。当我运行print命令时,它会打印x的类型和位置。

为什么打印操作而不是结果?

x = 'bacon'
x = x.upper
print x

>>> 
<built-in method upper of str object at 0x02A95F60>

2 个答案:

答案 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.upperupper的{​​{1}}属性,恰好是一个函数对象。 x是尝试将该属性称为函数的结果,因此您尝试执行

x.upper()

顺便说一下,你可以尝试在Python中调用任何对象,而不仅仅是函数。它并不总是有效,但语法是合法的。你可以做到

print x.upper()

甚至

x = 5
x()

但当然你会得到一个错误(在两种情况下完全相同)。但是,您可以实际将对象作为函数调用,只要它们定义5() 方法(正常函数可以)。您的示例实际上可以重写为

__call__