TypeError: X 在 Python 中没有关键字参数 [已解决]

目录

TypeError: str.replace() takes no keyword arguments (Python)

  1. TypeError:X 在 Python 中没有关键字参数
  2. TypeError: str.replace() 在 Python 中没有关键字参数
  3. TypeError: dict.get() 在 Python 中没有关键字参数

TypeError: X 在 Python 中没有关键字参数

当我们将关键字参数传递给仅采用位置参数的函数时,会出现 Python“TypeError: X takes no keyword arguments”。

要解决错误,请将位置参数传递给函数。

主程序
def get_name(first, last): return first + ' ' + last # ⛔️ calling the function with keyword arguments print(get_name(first='bobby', last='hadz')) # ✅ calling the function with positional arguments print(get_name('bobby', 'hadz'))

函数的第一次调用get_name使用关键字参数,第二次调用使用位置参数。

关键字参数采用 的形式argument_name=value,位置参数直接按值传递。

get_name示例中的函数可以两种方式调用而不会出现任何问题

但是,许多内置的 Python 方法没有参数名称,因此当您尝试使用关键字参数调用它们时,会引发错误。

相反,您应该将位置参数传递给这些方法。

这里有 2 个示例,说明错误是如何使用内置方法发生的以及如何解决它。

目录

  1. TypeError: str.replace() 在 Python 中没有关键字参数
  2. TypeError: dict.get() 在 Python 中没有关键字参数

TypeError: str.replace() 在 Python 中没有关键字参数

当我们将关键字参数传递给方法时,会发生“TypeError: str.replace() takes no keyword arguments” str.replace()

要解决该错误,请仅将位置参数传递给replace(),例如
my_str.replace('old', 'new')

python str replace 没有关键字参数

下面是错误如何发生的示例。

主程序
my_str = 'apple, apple, banana' # ⛔️ TypeError: str.replace() takes no keyword arguments result = my_str.replace(old='apple', new='kiwi')

错误是因为我们将关键字参数传递给该replace()
方法而引起的。

replace()方法只接受位置参数。

主程序
my_str = 'apple, apple, banana' result = my_str.replace('apple', 'kiwi') print(result) # 👉️ kiwi, kiwi, banana

str.replace方法返回字符串的副本,其中所有出现的子字符串都被提供的替换项替换

该方法采用以下参数:

姓名 描述
老的 字符串中我们要替换的子串
新的 每次出现的替换old
数数 count只替换第一次出现的(可选)

请注意,该方法不会更改原始字符串。字符串在 Python 中是不可变的。

如果在替换字符串中的字符时需要使用正则表达式,请使用re.sub
方法。

主程序
import re my_str = '1apple, 2apple, 3banana' result = re.sub(r'[0-9]', '_', my_str) print(result) # 👉️ _apple, _apple, _banana

re.sub方法返回一个新字符串,该字符串是通过使用提供的替换替换模式的出现而获得的。

如果未找到模式,则按原样返回字符串。

TypeError: dict.get() 在 Python 中没有关键字参数

当我们将关键字参数传递给方法时,会发生“TypeError: dict.get() takes no keyword arguments” dict.get()

要解决该错误,只需将位置参数传递给dict.get(),例如
my_dict.get('my_key', 'default')

typeerror dict get 没有关键字参数

下面是错误如何发生的示例。

主程序
my_dict = {'name': 'Bobby Hadz', 'age': 30} # ⛔️ TypeError: dict.get() takes no keyword arguments result = my_dict.get('name', default='')

错误是因为我们向该dict.get()
方法传递了一个关键字参数。

dict.get()方法只接受位置参数。

主程序
my_dict = {'name': 'Bobby Hadz', 'age': 30} print(my_dict.get('name', '')) # 👉️ "Alice" print(my_dict.get('another', 'default')) # 👉️ 'default'

如果键在字典中,则 dict.get 方法返回给定键的值,否则返回默认

该方法采用以下 2 个参数:

姓名 描述
钥匙 返回值的键
默认 如果字典中不存在提供的键,则返回默认值(可选)
default如果未提供参数值,则默认为None,因此该get()方法永远不会引发. KeyError

该方法采用的两个参数dict.get()都是位置参数。

您不能将关键字参数传递给该方法。

如果提供的键存在于dict对象中,则返回其值,否则,该get()方法返回提供的default值,或者None如果在调用时未提供值dict.get()

额外资源

您可以通过查看以下教程来了解有关相关主题的更多信息: