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

问题描述 投票:0回答:3

编辑:建议的重复项没有回答我的问题,因为我主要关注的是 Python 的具体差异。建议的重复比这个问题要广泛得多。

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

在书中,第一课之一涉及

print
,作者提供了它在 Python 2.7 中的各种使用说明,例如:

print "This is fun."

我发现自己在想,从编程的角度来看,这里的

print
在技术上是什么意思。 一些研究发现,PEP-3105

在这种情况下使

print
成为一个功能:

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

所以

print
在 Python 2.7 中是一个语句,在 Python 3 中是一个函数。

但是我一直无法找到

statement
function
之间区别的直接定义。我发现 this 也是由发明 Python 的人 Guido van Rossum 在其中他解释了为什么让 print 成为一个函数而不是一个语句会很好。

据我所读,函数似乎是一些接受参数并返回值的代码。但是

print
不是在 python 2.7 中这样做吗?它不是接受字符串并返回一个连接的字符串吗?

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

python python-2.7 python-3.x function statements
3个回答
10
投票

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

def
:

def Spam(): pass

所以语句是向 Python 表明你希望它创建一个函数的方法之一。除此之外,他们之间真的没有太多关系。


2
投票

Python 中的语句是您编写的任何代码块。它更像是一个理论概念,而不是真实的事物。如果您在编写代码时使用正确的语法,您的语句将被执行(“已评估”)。如果您使用不正确的语法,您的代码将抛出错误。大多数人互换使用“陈述”和“表达”。

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

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 还允许您在不调用函数的情况下声明打印到标准输出。该语句的语法是它以单词 print 开头,后面的内容就是打印的内容。在 Python3 中,这不再是一个有效的语句。

print "this is a message"

0
投票

函数和语句都是Python能理解的词

函数需要括号来作用于任何东西(包括什么都不作用)。

声明没有。

因此在 Python 3 中

print
是函数而不是语句。

让我们来看一个有趣的案例。

not True
not(True)
都有效。但是
type(not)
不是函数,因此
not
是语句。
not(True)
之所以有效,是因为 Python 也使用括号进行分组。糟糕的设计,确实。

另一个区别:

(not)
失败,
(print)
不失败,因为语句没有值而函数有值(对于解释器而言,不是某些先行的图像在数学意义上)。

© www.soinside.com 2019 - 2024. All rights reserved.