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

问题描述

我在线遇到了以下代码

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

我对函数的第二个参数类型str:str不熟悉。自变量的名称是什么?
我尝试用Google搜索它,似乎str是自变量的名称。我以为您不能使用类型作为参数的名称
有人可以解释它的工作原理吗?然后我该如何在函数中分别引用变量 str类型 str

解决方法

此函数是一个类的方法,该方法采用该类的一个实例(自身)和一个字符串,并且(应该)返回一个整数。 (名字Atoi是ascii到整数)。

冒号后面的部分是类型提示,它通过告诉用户您希望参数类型为str来使代码对用户更友好,尽管Python不会为您强制执行该操作,您仍然可以将其他类型传递给该函数。 -> int部分也是如此-这意味着该函数应返回一个整数(就像您正在编写的那样,应该是这种情况),但是Python不会再次执行该操作这是从函数返回的实际类型。

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

这是一个不好的做法,是因为它要求您使用变通方法来访问内置类型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)

现在可以工作并返回给我们的Hello5

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