有没有一种方法可以用新的格式语法来格式化函数调用中的字符串?
例如:
"my request url was {0.get_full_path()}".format(request)
因此它调用函数get_full_path()
函数在字符串中,而不是作为format函数中的参数。
编辑
下面是另一个例子,可能会更好地显示我的挫折感,这是我想要的:
"{0.full_name()} {0.full_last_name()} and my nick name is {0.full_nick_name()}".format(user)
这就是我想要避免的:
"{0} and {1} and my nick name is {2}".format(user.full_name(), user.full_last_name(), user.full_nick_name())
5条答案
按热度按时间jhkqcmku1#
不确定是否可以修改对象,但可以修改或 Package 对象以使函数具有属性。然后它们看起来就像属性,你可以这样做
这是法律的的。
dsekswqp2#
Python 3.6添加了文字字符串插值,它是用
f
前缀编写的。参见PEP 0498 -- Literal String Interpolation。这使得一个人可以写
应该注意的是,这些不是实际的字符串,而是表示每次计算为字符串的代码。在上面的例子中,
s
的类型为str
,值为'hello'
。你不能传递f
-string,因为它在使用之前会被计算为结果str
(不像str.format
,但像其他字符串文字修饰符,如r'hello'
,b'hello'
,'''hello'''
)。(PEP 501 -- General purpose string interpolation(当前延迟)建议一个字符串字面量,该字符串字面量将计算为一个稍后可以进行替换的对象。5rgfhyps3#
Python不直接支持变量插值。这意味着它缺乏其他语言支持的某些功能(即字符串中的函数调用)。
所以,这里没有什么可说的,除了不,你不能这么做。这不是Python的格式化语法的工作方式。
你最好的是这个:
xpcnnkqh4#
这个奇怪的东西呢?
说明:
1.经典的格式化方式
1.调用lambda内联作为字符串的参数。
我还是喜欢你这样做。
如果你想要可读性,你可以这样做:
4nkexdtk5#
因此,方法总结如下