python - 函数内部声明的字典
问题描述
已经四处搜索,但无法找到这个非常基本的问题的解决方案,我希望有人能帮助启发我(如果我在某个地方错过了它,请道歉!)为什么必须count_letters
在函数内而不是在函数外部声明下面的字典?
在第一个版本中,我能够正确声明address_count
,但在第二个不正确的版本中,我无法在address_count
返回时创建nonetype object of builtins module" error
。任何知识将不胜感激!
正确的解决方案
def counter (input_string):
count_letters = {}
for letter in input_string:
if letter in count_letters:
count_letters[letter] += 1
else:
count_letters[letter] = 1
return count_letters
address_count = counter(address)
不正确的解决方案
count_letters = {}
def counter(input_string):
for letter in input_string:
if letter in alphabet:
if letter in count_letters:
count_letters[letter] += 1
else:
count_letters[letter] = 1
address_count = count_letters
解决方案
如果您调用该函数并删除未引用的字母变量,您的“不正确”解决方案才有效
count_letters = {}
def counter(input_string):
for letter in input_string:
if letter in count_letters:
count_letters[letter] += 1
else:
count_letters[letter] = 1
counter("test")
print(count_letters)
推荐阅读
- c++ - 使用复制构造函数创建对象(三类简单规则)会产生运行时错误
- python - 空中消防型蟒蛇
- docker - 如何在devilbox上设置nginx以使用php-fpm的nginx全局变量映射
- swift - 为什么我的数据模型没有上传到我的 tableviewcontroller
- java-native-interface - 使用语言c ++从ndk调用方法String java
- python - 从文本到熊猫列的正则表达式
- java - 使用 MySQL Connector/J 8.0 在 MySQL 中存储和检索没有任何时区信息的日期
- sql - 在混合符号之间获取子字符串
- c# - 如何从被其他射线投射击中的物体投射射线?
- wso2 - 无法为 ssl://wso2apim-analytics-service.domain.com:7712 借用客户端