我正在尝试以一种类似于常规Ruby Gem结构的方式来构造Sinatra应用程序。我有以下文件树:
.
??? app.rb
??? config.ru
??? Gemfile
??? Gemfile.lock
??? helpers
? ??? dbconfig.rb
? ??? functions.rb
? ??? init.rb
??? hidden
? ??? Rakefile
??? lib
? ??? admin.rb
? ??? api.rb
? ??? indexer.rb
? ??? init.rb
? ??? magnet.rb
??? models
? ??? init.rb
? ??? invite.rb
? ??? tag.rb
? ??? torrent.rb
? ??? user.rb
??? public
? ??? css
? ? ??? reset.css
? ? ??? style.css
? ??? i
? ??? img …Run Code Online (Sandbox Code Playgroud) 当我接受参数时,如何在没有复合条件的情况下检查两个是否同时出现
即
#!/usr/bin/python
import random, string
import mymodule
import sys
z = ' '.join(sys.argv[2:])
q = ''.join(sys.argv[3:])
a = ''.join(sys.argv[2:])
s = ' '.join(sys.argv[1:])
flags = sys.argv[1:5]
commands = [["-r", "reverse string passed next with no quotes needed."], ["-j", "joins arguments passed into string. no quotes needed."], ["--palindrome", "tests whether arguments passed are palindrome or not. collective."],["--rand","passes random string of 10 digits/letters"]]
try:
if "-r" in flags:
if "-j" in flags:
print mymodule.reverse(q)
if not "-j" in flags:
print mymodule.reverse(z) …Run Code Online (Sandbox Code Playgroud) 我怎么输入以下内容
eval("mult = lambda x,y: (x*y)")
Run Code Online (Sandbox Code Playgroud)
我认为这是一个错误?这是怎么回事?
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<string>", line 1
mult = lambda x,y: (x*y)
^
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?如果我按原样输入表达式(不eval)我没有错误,并且可以使用mult我心中的内容.
我正在编写一个小型计算器(带有前缀表示法),我很好奇如何将前缀表示法转换为中缀表示法。我目前有一个功能,但它很奇怪,我不知道如何修复它。我所说的奇怪是指如果给予['+', x, y]它就会返回,(() + x + () + y)这让我感到困惑。这是代码。
def pre_in(read):
#print read
tempOp = read[0]
body = read[1:]
expr = []
for i in range(len(body)-1):
if not isinstance(body[i], list) and body[i] != " ":
expr.append(str(body[i]))
expr.append(tempOp)
else:
expr.append(str(pre_in(body[i])))
expr.append(tempOp)
try:
if not isinstance(body[-1], list):
expr.append(str(body[-1]))
else:
expr.append(str(pre_in(body[-1])))
except:
pass
if expr != None: return "("+' '.join(expr)+")"
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
我在XAMPP上注意到严格的错误报告已经开启,我现在得到了未定义的索引错误.我只有两个小问题(我还在这里学习):
我知道你不具备在PHP声明变量,但它有什么优势无论如何声明呢?如果没有,当我没有定义严格错误报告时,为什么会出现错误?
例如,当我使用get变量时,我会在运行类似函数之前检查它们的值
if($_GET['todo'] == 'adduser')
runFunctionAddUser();
Run Code Online (Sandbox Code Playgroud)
这会产生错误,因为我从不检查get变量是否首先存在.我应该这样做
if(isset($_GET['todo']))
if($_GET['todo'] == 'adduser')
runFunctionAddUser();
Run Code Online (Sandbox Code Playgroud)
代替?这会有优势还是不必要而且缓慢?
有没有办法在Redis中将一个函数的返回值传递给另一个函数?当然,如果您使用的是语言包装器(如Ruby),那很容易 - 但是从CLI开始呢?
比如像这样的东西,bash风格
redis 127.0.0.1:6379> keys student* | mget
Run Code Online (Sandbox Code Playgroud)
或类似的东西
redis 127.0.0.1:6379> mget(keys student*)
Run Code Online (Sandbox Code Playgroud)
keys student* 将返回一个键列表,但我不知道如何获取这些键的所有值.
思考?
我正在通过AST变换开发一种小型编程语言.也就是说,从VM开始并慢慢添加帮助程序员的层.
由于每个层都知道如何转换它的新类型,我做了类似这样的事情:
module AST0 = struct
type t = [
| `Halt
| `In
| `Out
| `Add of (int * int * int)
| `Sub of (int * int * int)
]
let lower (ast : t list) = ast
end
module AST1 = struct
type t = [
AST0.t
| `Inc of int
| `Dec of int
| `Cmp of (int * int * int)
]
let lower (ast : t list) =
let lower_one = function
| …Run Code Online (Sandbox Code Playgroud) def pi(times):
seq = []
counter = 0
for x in range(times):
counter += 2
seq.append("((%f**2)/(%f*%f))*"%(float(counter), float(counter-1), float(counter+1)))
seq.append("1.0")
seq = "".join(seq)
seq = eval(seq)
return seq*2
Run Code Online (Sandbox Code Playgroud)
在85000个术语的任何地方,我都会遇到分段错误并退出python.我怎么能避免这个?为什么会崩溃?不能只是请使用更多的内存或什么?
我正在Grape中编写一个API,但它是独立的,没有Rails或Sinatra或任何东西.我想将app.rb文件拆分为单独的文件.我看过如何在葡萄api app中拆分东西?,但这与Rails有关.
我不知道如何使用模块或类来完成这项工作 - 我确实尝试将不同的文件子类化为我的大文件GrapeApp,但这很难看,我甚至不确定它是否正常工作.最好的方法是什么?
我现在有通过文件夹(拆分版本v1,v2等),但仅此而已.
如您所知,您可以指定路由中需要参数,如下所示:
requires :province, :type => String
但是,我希望能够更改引发的错误,并在未给出参数时提供我自己的错误JSON.
我怎么能这么容易做到?猴子补丁我很好.
编辑:我在第191行看到rescue_from,看起来它可能会有所帮助,但我不知道如何使用它.
https://codeclimate.com/github/intridea/grape/Grape::API