将关键字作为参数传递
Passing keywords as parameters
将关键字作为函数参数是否违反Python "style"?
例如
def findStartTime(dict):
for key, value in dict.iteritems():
#do something based on values in dictionary
return something
...除了风格,
有什么潜在的问题会出现吗?
如果将来出于某种原因你想在函数内部调用 dict() 来创建字典怎么办?无论如何,给变量起有意义的名字,而不是按类型命名。
问题归结为范围。如果您调用某些东西 dict
,您将无法访问 dict
方法。
例如,如果您调用变量 math
那么您将无法访问 math.method()
:
>>> import math
>>> math = "MATH"
>>> rounded_number = math.floor(3.14)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'str' object has no attribute 'floor'
>>> import math
>>> rounded_number = math.floor(3.14)
>>> rounded_number
3.0
所以我导入数学,然后用字符串覆盖模块。因此 AttributeError
然后我重新导入 math
并且繁荣,math.floor()
又是一个有效的方法。所以基本上,如果你调用 dict
"dict" 它将阻止使用 dict()
构造函数和其他方法。
希望对您有所帮助!
将关键字作为函数参数是否违反Python "style"? 例如
def findStartTime(dict):
for key, value in dict.iteritems():
#do something based on values in dictionary
return something
...除了风格,
有什么潜在的问题会出现吗?
如果将来出于某种原因你想在函数内部调用 dict() 来创建字典怎么办?无论如何,给变量起有意义的名字,而不是按类型命名。
问题归结为范围。如果您调用某些东西 dict
,您将无法访问 dict
方法。
例如,如果您调用变量 math
那么您将无法访问 math.method()
:
>>> import math
>>> math = "MATH"
>>> rounded_number = math.floor(3.14)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'str' object has no attribute 'floor'
>>> import math
>>> rounded_number = math.floor(3.14)
>>> rounded_number
3.0
所以我导入数学,然后用字符串覆盖模块。因此 AttributeError
然后我重新导入 math
并且繁荣,math.floor()
又是一个有效的方法。所以基本上,如果你调用 dict
"dict" 它将阻止使用 dict()
构造函数和其他方法。
希望对您有所帮助!