背景:
我主要从管道中的命令行运行python脚本,因此我的参数总是需要类型转换为适当类型的字符串.我每天都会编写很多小脚本,并为每个脚本输入每个参数的类型需要更多的时间.
问题:
是否有一种规范的方法可以自动为函数键入强制转换参数?
我的方式:
如果没有更好的方法,我已经开发了一个装饰器来做我想做的事情.装饰器是下面的autocast fxn.在示例中,装饰的fxn是fxn2.请注意,在代码块的末尾,我将1和2作为字符串传递,如果您运行脚本,它将自动添加它们.这是一个很好的方法吗?
def estimateType(var):
#first test bools
if var == 'True':
return True
elif var == 'False':
return False
else:
#int
try:
return int(var)
except ValueError:
pass
#float
try:
return float(var)
except ValueError:
pass
#string
try:
return str(var)
except ValueError:
raise NameError('Something Messed Up Autocasting var %s (%s)'
% (var, type(var)))
def autocast(dFxn):
'''Still need to figure out if you pass a variable with kw args!!!
I guess I can just pass the dictionary to …Run Code Online (Sandbox Code Playgroud) 没有设置!
我不能使用Sets因为:
仅使用范围的端点,是否有一种减去两个范围列表的最佳方法?
r1 = (1, 1000), (1100, 1200)
r2 = (30, 50), (60, 200), (1150, 1300)
r1 - r2 = (1, 29), (51, 59), (201, 1000), (1100, 1149)
Run Code Online (Sandbox Code Playgroud)
谢谢.
我使用vim和snipmate进行python编程.如果我可以为bash命令行设置一个代码片段系统,那将是理想的选择.现在我在ubuntu中使用gnome终端...
例如,如果我输入:
for<TAB>
Run Code Online (Sandbox Code Playgroud)
我明白了:
for i in {1..50}; do SOMETHING; done
Run Code Online (Sandbox Code Playgroud)
我的谷歌foo让我失望,所以我再次转向SO.有任何想法吗?
python ×2
bash ×1
casting ×1
command-line ×1
overlap ×1
parameters ×1
range ×1
snipmate ×1
types ×1