python - 我可以在 print() 函数或常规 if-else 语句中定义一个函数,而不是在 Python 中使用三元运算符吗?
问题描述
当我在下面的代码块的 print 函数中使用 if-else 语句的常规语法时,出现如下所述的错误,
def to_smash(total_candies):
"""Return the number of leftover candies that must be smashed after distributing
the given number of candies evenly between 3 friends.
>>> to_smash(91)
1
"""
print("Splitting", total_candies,
(def plural_or_singular(total_candies):
if total_candies>1:
return "candies"
else:
return "candy"),
plural_or_singular(total_candies))
return total_candies % 3
to_smash(1)
to_smash(15)
################################################# ##################################
Output:
File "<ipython-input-76-b0584729b150>", line 10
(def plural_or_singular(total_candies):
^
SyntaxError: invalid syntax
我所说的常规 if-else 语句是什么意思,
if total_candies>1:
return "candies"
else:
return "candy")
使用三元运算符的相同语句,
print("Splitting", total_candies, "candy" if total_candies == 1 else "candies")
解决方案
def to_smash(total_candies):
print("Splitting", total_candies, (lambda total_candies: "candies" if total_candies > 1 else "candy")(total_candies))
return total_candies % 3
to_smash(1)
to_smash(15)
但是,请注意,Python 在传递函数方面不如 Javascript 通用——lambda
有其局限性,特别是它只是一个单行函数。相反,我建议只在 print 语句之外定义你的函数。
def to_smash(total_candies):
def plural_or_singular(total_candies):
if total_candies>1:
return "candies"
else:
return "candy"
print("Splitting", total_candies, plural_or_singular(total_candies))
return total_candies % 3
to_smash(1)
to_smash(15)
推荐阅读
- java - java.lang.AssertionError:手动构建插件时,类 hudson.plugins.jacoco.JacocoPublisher 缺少其描述符
- c++ - C++ 数字计算器模拟器
- javascript - 为什么单击登录后我的微调器不会出现?
- azure-data-explorer - 我可以在 Kusto 用户定义的函数中使用表格参数吗
- .net-core - Ubuntu 和 Apache 配置上的 Dotnet Core
- css - 标签内文本的css选择器并使用之前和之后
- html - writeHTML 后更改页面格式
- angularjs - 在旧版 AngularJS 网站 (Java/Spring) 中集成 Webpack
- time - 如何将一个时域中的时钟转换为另一个时域?
- version-control - 控制版的优势还是非优势?