这个 Python 函数参数是什么意思?

What Does This Python Function Argument Mean?

我在网上看到了以下代码:

class Solution: 
   def myAtoi(self, str: str):
        #function does something here

我不熟悉函数的第二个参数类型str:str。参数的名称是什么?
我试着 Google 它,似乎 str 是参数的名称。我认为你不能使用类型作为参数的名称。
谁能解释一下它是如何工作的?那么我将如何在我的函数中引用每个 variable strtype str

此函数是 class 的一个方法,它采用 class(self)和一个字符串的实例,并且(应该)returns 是一个整数。 (名字Atoi是ascii转整数)。

冒号后面的部分是类型提示,通过告诉用户您希望参数类型为 str 来让您的代码对用户更友好,尽管 Python 赢了' 为您强制执行,您仍然可以将其他类型传递给该函数。 -> int 部分也是如此——这意味着该函数应该 return 一个整数(因为你是写它的人,应该是这样的)但是又一次, Python 不会强制这是从函数 return 编辑的实际类型。

第一个 str 是变量的名称,它覆盖函数范围的内置类型名称 str这是一种不好的做法,应该避免。这很混乱,可能会导致意外的错误和错误。

这是一种不好的做法,因为它要求您使用 work-around 来访问内置类型 str
让我们看下面的例子:

def foo(str, a):
    return str + str(a)

foo("Hello", 5)

当尝试执行那段代码时,我们将收到 TypeError:

TypeError: 'str' object is not callable

因为该函数不会像在该函数的范围内那样尝试访问内置类型 str,所以名称 str 指的是局部变量(这也是一个非常令人困惑的部分代码)。

如果我们想要访问内置类型 str 并保留变量名 str,我们将必须执行如下操作:

import builtins

def foo(str, a):
    return str + builtins.str(a)

foo("Hello", 5)

现在可以工作了 return 我们:Hello5

如您所见,最简单的解决方法就是将变量名重命名为其他名称:)