我通过空声明定义变量:
SELECT CAST(FLOOR(VALUE) AS VARCHAR2(30))
+ CASE
WHEN CAST(SUBSTR(SUBSTR(VALUE, INSTR(VALUE, '.')), 4) AS INT) > 5
THEN
CONCAT(
'.',
( SUBSTR(
SUBSTR(VALUE, INSTR(VALUE, '.')),
2,
2
)
+ 1)
)
ELSE
CONCAT(
'.',
SUBSTR(
SUBSTR(VALUE, INSTR(VALUE, '.')),
2,
2
)
)
END
FROM DUAL;
是否可以强制初始化In [1]: a = bool()
In [2]: a
Out[2]: False
?
注意:我知道我可以简单地使用True
或a = True
,但我会使用特定类型初始化几个变量,例如
a = bool(True)
x = dict()
for v in [('a', int), ('b', float), ('c', bool)]
x[v[0]] = v[1]()
,int
等的默认设置是正常的,我更愿意将float
初始化为bool
答案 0 :(得分:4)
您可以使用functools.partial
自定义bool
:
from functools import partial
my_bool = partial(bool, 1)
print(my_bool())
# True
您可以在代码中使用它:
x = dict()
for v in [('a', int), ('b', float), ('c', my_bool)]
x[v[0]] = v[1]()
你也可以使用lambda(credit:@tobias_k):
my_bool = lambda: True
答案 1 :(得分:2)
可能为您提供可能的解决方案,并具有其他特殊默认值的灵活性
typeDefaults = {bool: True}
for v in [('a', int), ('b', float), ('c', bool)]:
x[v[0]] = typeDefaults[v[1]] if v[1] in typeDefaults else v[1]()
答案 2 :(得分:1)
您可以将要更改默认值的类型映射到您自己的函数:
>>> defaults = {bool: lambda: True}
>>> x = {}
>>> for k, v in [('a', int), ('b', float), ('c', bool)]:
... x[k] = defaults.get(v, v)()
...
>>> x
{'a': 0, 'c': True, 'b': 0.0}
或使用词典理解:
>>> {k: defaults.get(v, v)() for k, v in [('a', int), ('b', float), ('c', bool)]}
{'a': 0, 'c': True, 'b': 0.0}