Python 中的语句和函数有什么区别?

What is the difference between a statement and a function in Python?

提问人:Gary 提问时间:4/16/2017 最后编辑:Gary 更新时间:2/23/2023 访问量:11142

问:

编辑:建议的重复项不能回答我的问题,因为我主要关注的是 Python 中的差异。建议的重复项远比这个问题更广泛。

我最近开始学习 Python。我目前正在阅读“以艰难的方式学习 Python”。我有一些临时编程经验,但这次我将回到起点,从头开始学习所有内容。

在本书中,第一课涉及,作者提供了在 Python 2.7 中使用它的各种说明,例如:print

print "This is fun."

我发现自己想知道从编程的角度来看,这里在技术上叫什么。一些研究发现了这一点,PEP-3105print

在这种情况下,要制作一个函数:print

印刷声明长期以来一直出现在可疑语言列表中 要在 Python 3000 中删除的功能,例如 Guido 的 “Python 遗憾”演示 1 .因此,这个 PEP 的目标 并不新鲜,尽管它可能会在 Python 中引起很大争议 开发 人员。

Python 2.7 中的语句和 Python 3 中的函数也是如此。print

但是我一直无法找到一个直接的定义来定义 a 和 a 之间的区别。我也发现了这一点,发明了 Python 的人 Guido van Rossum,他在其中解释了为什么将 print 变成函数而不是语句会很好。statementfunction

从我所读到的内容来看,函数似乎是一些接受参数并返回值的代码。但是在python 2.7中不是这样做吗?它不是接受字符串并返回一个串联的字符串吗?print

Python 中的语句和函数有什么区别?

python-2.7 python-3.x 函数 语句

评论

6赞 jonrsharpe 4/16/2017
仅供参考:sopython.com/wiki/LPTHW_Complaints。不,print 语句不返回任何内容(与返回 None 的 print 函数不同)。
1赞 mkrieger1 4/16/2017
语句和函数之间的差异可能重复
0赞 Gary 4/16/2017
我确实看到了这个问题,但我在这里主要关注的是 Python,而其他语言则更是作为旁白。在建议的副本中,所选的答案指出“在大多数语言中,语句不返回值。Python 中语句和函数之间的区别没有在该答案中出现。
1赞 mkrieger1 4/17/2017
IMO 是我链接的问题的公认答案,它以一种与语言无关的方式很好地解释了它,这也适用于 Python。第二个投票的答案是特定于 Python 的。如果你对两者都不满意,你应该阅读 Python 语言参考,特别是关于复合语句的部分,在那里你将了解到函数定义是语句的一个示例。
0赞 Gary 4/17/2017
我感谢你的努力mkrieger。我试图理解函数和语句之间的区别。事实上,函数定义可能是一个语句的例子,对我没有帮助,它有点循环。我试图了解函数具有 Python 中语句所没有的独特品质,反之亦然,即语句和 Python 中的函数有什么区别。吉姆·法萨拉基斯·希利亚德(Jim Fasarakis Hilliard)的回答有所帮助,如果其他人愿意详细说明,那将是有用的。

答:

10赞 Dimitris Fasarakis Hilliard 4/16/2017 #1

语句是一种语法结构。函数是一个对象。有创建函数的语句,例如:def

def Spam(): pass

因此,语句是向 Python 指示您希望它创建函数的方法之一。除此之外,它们之间真的没有太多关系。

评论

1赞 Mike B 2/17/2020
你能详细说明一下这个答案吗?不都是语法结构吗?
2赞 Kevin 8/29/2019 #2

Python 中的语句是您编写的任何代码块。这与其说是一个真实的东西,不如说是一个理论概念。如果在编写代码时使用正确的语法,则将执行语句(“evaluated”)。如果使用不正确的语法,代码将引发错误。大多数人可以互换使用“陈述”和“表达”。

查看语句和函数之间差异的最简单方法可能是查看一些示例语句:

5 + 3 # This statement adds two numbers and returns the result
"hello " + "world" # This statement adds to strings and returns the result
my_var # This statement returns the value of a variable named my_var
first_name = "Kevin" # This statement assigns a value to a variable.
num_found += 1 # This statement increases the value of a variable called num_found
print("hello") # This is a statement that calls the print function
class User(BaseClass): # This statement begins a class definition
for player in players: # This statement begins a for-loop
def get_most_recent(language): # This statement begins a function definition
return total_count # This statement says that a function should return a value
import os # A statement that tells Python to look for and load a module named 'os'

# This statement calls a function but all arguments must also be valid expressions.
# In this case, one argument is a function that gets evaluated
mix_two_colors(get_my_favorite_color(), '#000000')

# The following statement spans multiple lines and creates a dictionary
my_profile = {
  'username': 'coolguy123' 
}

下面是无效语句的示例:

first+last = 'Billy Billson'
# Throws a Syntax error. Because the plus sign is not allowed to be part of a variable name.

在 Python 中,您倾向于将每个语句放在各自的行上,但嵌套语句除外。但是在 C 和 Java 等其他编程语言中,您可以根据需要将任意数量的语句放在一行中,只要它们用冒号 (;) 分隔即可。

在 Python2 和 Python3 中,您可以调用

print("this is a message") 

它会将字符串打印为标准输出。这是因为它们都定义了一个名为 print 的函数,该函数接受字符串参数并打印它。

Python2 还允许您在不调用函数的情况下制作语句以打印为标准输出。这句话的语法是,它以“打印”一词开头,之后的就是打印的内容。在 Python3 中,这不再是一个有效的语句。

print "this is a message"

评论

0赞 Avizipi 8/7/2020
同样在 Python 中,您可以根据需要将任意数量的语句放在一行中,只要它们用冒号 (;) 分隔即可。
0赞 Pierre ALBARÈDE 2/23/2023 #3

函数和语句都是 Python 可以理解的词。

函数需要括号才能对任何内容(包括任何内容)执行操作。

声明没有。

因此,在 Python 3 中是函数而不是语句。print

让我们举一个有趣的例子。 两者都有效。但不是功能,因此是语句。 之所以有效,是因为 Python 也使用括号进行分组。确实是糟糕的设计。not Truenot(True)type(not)notnot(True)

另一个区别:失败,不失败,因为一个语句没有值,而一个函数有一个值(对于解释者来说,不是在数学意义上的某个先行者的图像)。(not)(print)

评论

0赞 slothrop 10/16/2023
not是运算符,而不是语句。