小编seq*_*eek的帖子

在Python中自动键入Cast参数

背景:
我主要从管道中的命令行运行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)

python parameters types casting

13
推荐指数
3
解决办法
2万
查看次数

在没有集合的情况下减去两个范围之间的重叠

没有设置!

我不能使用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)

其他信息:

  • r2不必与r1重叠
  • r1和r2不会有与其他对重叠的对.例如,r1不会同时具有(0,30)和(10,25)

谢谢.

python range overlap

8
推荐指数
3
解决办法
3790
查看次数

Bash命令行的片段?

我使用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.有任何想法吗?

bash command-line code-snippets snipmate

8
推荐指数
2
解决办法
3103
查看次数