为什么“int”在“input”之前?我想了解这段代码的逻辑[关闭]

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

我的老师给了我这个问题:制作一个读取整数并打印它的程序。 所以我找到了这段代码:

integer_number = int(input("Enter an integer: "))

print("You entered:", integer_number)

我想了解为什么函数:“int”比“input”先出现

我希望“input”函数比“int”函数先出现,因为“input”具有向用户请求信息以便用户填写的功能,而“int”则将给定的字符串转换为整数。

python syntax operator-precedence
5个回答
6
投票
integer_number = int(input("something here"))

相当于***:

temp_var = input("something here")
integer_number = int(temp_var)

事实并非如此,因为

int()
函数接受一个字符串并将其转换为
int
。如果您以相反的方式进行操作,该函数将没有任何内容可转换。

*** :在 Python 中,函数是一等对象。您可以将它们分配给变量,将它们存储在数据结构中,将它们作为参数传递给其他函数,甚至将它们作为其他函数的值返回。因此,无需使用

temp_var
创建
input("something here)"
并使用
int
将其作为参数传递给
int(temp_var)
您可以直接使用它们,如下所示:
int(input("something here"))


2
投票

在Python中,你可以将函数作为另一个函数的参数传递,当然它们会在外部函数之前被评估。我想我应该向您指出相关的官方 Python 文档,其中指出了这一点,但仅通过谷歌搜索现在还行不通。

参见 Python 的函数是一流的 :

Python 的函数是一流的对象。您可以将它们分配给变量,将它们存储在数据结构中,将它们作为参数传递给其他函数,甚至将它们作为其他函数的值返回。

在 SO 上得到了一个很好的答案:

什么是“一流”对象 :

简而言之,这意味着该对象的使用没有任何限制。它与任何其他物体一样。

第一类对象是一个实体,可以动态创建、销毁、传递给函数、作为值返回,并拥有编程语言中其他变量所拥有的所有权利。

你的问题不是第一个问题:

在调用函数之前评估所有参数

答案:

你是对的,所有参数在调用函数之前都会被评估,否则函数无法知道传递给它的是什么。所以你所做的实际上是:

但这里也没有文档链接。

找了好久才找到这里:

6.3.4。调用它是Python 3的链接:

......................所有参数表达式在尝试调用之前都会被评估。形参列表的语法请参考函数定义章节.........


1
投票

当您使用

input("something")
时,它会要求用户输入,
return
是一个字符串,这里
"something"
input()
参数

output
上调用 int() 尝试将其转换为
int
,这里的输入(无论用户输入什么)是 argument
int()

如果你有

input(int("something"))
,会发生的情况是
"something"
被传递给
int()
,引发异常(因为该文字字符串不能是有效的
int


1
投票

首先,代码首先利用

input()
函数向用户请求整数。显示提示符
"Enter an integer: "
,清楚地指示所需的输入类型。接下来,使用
int()
函数将输入转换为整数。这一重要步骤可确保将用户输入的值视为整数,使其适合数学计算并避免任何可能的错误。然后将转换后的整数分配给变量
integer_number
,其中包含代码的最终结果。

接下来,我们调用有用的

print()
函数来传递自定义消息以及输入的整数。消息
"You entered:"
后面平滑地跟着存储在变量
integer_number
中的整数值,让用户放心输入。


1
投票

在 input 之前放置 int 的原因是因为 input 会自动将您输入的任何内容设置为字符串。然后 int 函数启动并将任何内容设置为整数。如果您以其他方式完成此操作,您可能会将其设置为整数,然后设置为字符串,并且会出现错误,因为输入必须具有如下所示的内容:

i = input('print things here')

用引号表示您打印的内容,然后要求输入。使用 input(int('input')) ,它会尝试打印 int('input') 而不用引号引起来,并会导致错误。

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