示例代码文件:
MyCode.py
def DoSomething(data):
# data is a string
# find a function in the same scope as this one that has the name contained
# in "data"
try:
func = getattr(self,data) # this is wrong
except AttributeError:
print "Couldn't find function %s." % data
return
# execute the function
func()
def AFunction():
print "You found a function!"
def Add():
print "1 + 1 = %d." % ( (1+1) )
def test():
# unit test
DoSomething("AFunction")
--------
test.py
import MyCode …Run Code Online (Sandbox Code Playgroud) 我正在编写一个 ASP.NET Web API。作为其中的一部分,我发现在测试期间需要实现一个类IDisposable以确保释放托管资源。
所以,我IDisposable在我的类中实现,并将释放资源所需的代码放在Dispose()方法中。
我的代码中有很多地方(数百个)在其中实例化了这个对象,并在同一行中调用了新实例上的方法。我只需要实例来调用单个方法。
下面是一个例子:
// MyObject, a class that needs to be disposed of.
public class MyObject : IDisposable
{
private AnObjectThatMustBeDisposed localObject;
public MyObject()
{
localObject = SomeLibrary.SomeProject.AnObjectThatMustBeDisposed.Create();
}
public void doOperationOne()
{
localObject.DoSomething(1);
}
public string getOperationTwo()
{
return localObject.DoSomething(2);
}
public string getOperationThree()
{
return localObject.DoSomething(3);
}
public bool getOperationFour(string input)
{
return localObject.DoSomethingSpecial(4,input.ToLower());
}
...
public void getOperationOneHundred(DateTime input)
{
localObject.DoSomethingElse(100,input);
}
public void Dispose()
{
localObject.CloseResources(); …Run Code Online (Sandbox Code Playgroud) 假设我有一个真正随机的字节数组(例如从熵源捕获).
byte[] myTrulyRandomBytes = MyEntropyHardwareEngine.GetBytes(8);
Run Code Online (Sandbox Code Playgroud)
现在,我想获得一个随机的双精度浮点值,但值介于0和正1之间(就像Random.NextDouble()函数执行一样).
简单地将8个随机字节的数组传递给BitConverter.ToDouble()可能产生奇怪的结果,但最重要的是,结果几乎不会小于1.
我对位操作很好,但浮点数的格式对我来说一直都很神秘.我尝试了许多位组合来应用随机性,并且总是最终发现数字要么刚刚超过1,要么非常接近0,要么非常大.
有人可以解释哪些位应该在a double中随机,以使其在0和1范围内随机?
我正在研究高级计时和时间统计应用程序.我正在使用Python timedelta对象来表示应用程序中的时间跨度.
我想弄清楚的是,是否有办法表示timedelta对象的任意部分.
timedelta提供的运算符只允许使用整数.你可以将一个timedelta乘以一个整数,你可以将它除以一个整数,但你不能用浮点数.
我希望能够做两件事:
1:给定一个timedelta对象,找出它的任意百分比.换句话说,浮点数乘以或除以的能力:
from datetime import timedelta
import math
td = timedelta(1)
newTd = td * 0.01 # 1% of the time delta specified in td
newTd = td * 1.04 # 104% of the time delta given in td
newTd = td * math.pi # the timedelta multiplied by pi (lol)
Run Code Online (Sandbox Code Playgroud)
2:给定两个timedelta对象,计算一个timedelta给出的时间跨度相对于另一个时间delta作为float的百分比:
from datetime import timedelta
td1 = timedelta(1)
td2 = timedelta(2)
td1 / td2 # should give me 0.5
td2 = timedelta(days=4, minutes=50)
td1 …Run Code Online (Sandbox Code Playgroud) 这可能是不可能的,但如果是的话,我写的一些代码会很方便:
ListOne = ['jumps', 'over', 'the']
ListTwo = ['The', 'quick', 'brown', 'fox', ListOne, 'lazy', 'dog!']
Run Code Online (Sandbox Code Playgroud)
如果我这样做,我最终会将ListOne作为ListTwo中的一个列表.
但相反,我想将ListOne扩展为ListTwo,但我不想做以下事情:
ListOne = ['jumps', 'over', 'the']
ListTwo = ['The', 'quick', 'brown', 'fox']
ListTwo.extend(ListOne)
ListTwo.extend(['lazy', 'dog!']
Run Code Online (Sandbox Code Playgroud)
这将有效,但它不像上面的代码那样可读.
这可能吗?
我试图在特定情况下使用一些自定义Owin中间件来修改(在这种情况下,完全替换)响应流.
每当我做一个呼叫并触发我的中间件,以取代反应,一切工作正常.只有当我打电话给我的中间件没有进行更改时才会出现此问题.此外,我只能够取得错误发生时所API调用没有被替换为返回手动创建HttpResponseMessage对象.
例如,调用此API:
public class testController : ApiController
{
public HttpResponseMessage Get()
{
return Request.CreateResponse(HttpStatusCode.OK,new { message = "It worked." });
}
}
Run Code Online (Sandbox Code Playgroud)
工作正常,但这个类:
public class testController : ApiController
{
public HttpResponseMessage Get()
{
HttpResponseMessage m = Request.CreateResponse();
m.StatusCode = HttpStatusCode.OK;
m.Content = new StringContent("It worked.", System.Text.Encoding.UTF8, "text/plain");
return m;
}
}
Run Code Online (Sandbox Code Playgroud)
导致错误发生.(在这两种情况下,http://localhost:<port>/test都被称为.)
该错误导致以下任一情况:
引发AccessViolationExceptionVisual Studio捕获但无法执行任何操作,因为它发生在外部代码中.当Visual Studio确实捕获异常时,我看到:
An unhandled exception of type 'System.AccessViolationException' occurred in System.Web.dll
Additional information: Attempted to read …Run Code Online (Sandbox Code Playgroud)假设我有这个简单的对象定义:
public class Item
{
public int section { get; set; }
public string item { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我在单深度数组中有一些数据。这是 JSON,它将通过 Json.NET 转换为 C# 对象:
[
{
"section": 0,
"item": "Hello!"
},
{
"section": 1,
"item": "First Steps"
},
{
"section": 1,
"item": "How to Ask for Help"
},
{
"section": 2,
"item": "Your First Program"
},
{
"section": 2,
"item": "The Code"
},
{
"section": 2,
"item": "How It Works"
},
{
"section": 3,
"item": "Where To Go …Run Code Online (Sandbox Code Playgroud) 我正在编写一组打算在Web上使用的Python脚本。目前,我有一些使用的测试脚本可以正常工作import cgi。
我基本上想要FastCGI / WSGI的行为。在这种情况下,我可以将特定URL下的所有请求传递给脚本。例如,假设用户访问URL http://www.example.com/script/run/1?param=true。对于/script我想要的给定脚本,例如/opt/mypython/webscript.py使用的任何请求import cgi,都可以运行并接收URL和GET参数。在这种情况下,我希望从脚本中能够看到包含一个参数/run/1和GET参数字典。
出于安全考虑,理想情况下,我们希望脚本位于文档根目录之外。
我还希望能够x-sendfile从脚本中使用标头。我知道FastCGI模块支持此功能,但不确定标准CGI是否支持。
我愿意迁移到FastCGI,但我不想重构任何代码。另外,我想在开发过程中使用标准的CGI,因为我调查的唯一FastCGI实现(波动)将导致脚本被缓存,因此在每次更改代码时都必须完全重新启动整个Web服务器。另外,flup要求您使用CGI接口进行一些不同的工作,这将意味着重写一些主要的代码。
flup确实提供了一些不错的便利;它的environ变量提供了一个PATH_INFO参数,用于指定如上所述的子路径。但是同样,标准的CGI模块并不能提供所有这些便利,因此flup需要重新编写代码,并且在开发过程中频繁更改代码的效率非常低。
因此,理想的解决方案是既使用标准CGI,又使用FastCGI来完成此任务,而无需重新编写代码。因此,在开发过程中,我可以使用标准的CGI及其伴随的性能下降(事实是python解释器必须每次启动),然后在代码准备好用于生产时轻松地将其迁移到基于FastCGI的后端,以便可以以最高性能运行。
我正在使用lighttpd的当前版本。如果可能的话,我需要做什么来配置lighttpd?
这可能是一个非常简单的问题......
这里我有一些Swift代码:
var url: NSURL
if (someValue > 1) {
var fullUrl = self.baseUrl + "?id=" + (someValue as! String);
var url = NSURL(string: fullUrl);
}
else {
var url = NSURL(string: self.baseUrl);
}
let req = NSURLRequest(URL: url);
webView.loadRequest(req);
Run Code Online (Sandbox Code Playgroud)
如您所见,我需要有条件地初始化url变量.但是,我在几乎所有其他强类型语言中使用的方法 - 初始化变量然后在if语句中赋值给它 - 似乎不是Swiftly的做法.
上面的代码将拒绝编译错误"变量'url'用于初始化"错误.(当然,从这个程序流程中,你可以看到它url总是被初始化,但是Swift显然没有理所当然.)
不在if块外定义变量会导致未知标识符错误 - 似乎if块内定义的变量仅限于该块内的范围.
如果没有定义一个空的NSURL对象,有没有更好的方法呢?
我最好喜欢使用let它,因为NSURL对象一旦创建就永远不会改变 - 并且Swift倾向于建议let尽可能使用它.但是,let在这种情况下你会如何使用?(我试过了 - 发生了相同类型的错误.Swift不高兴我实际上并没有声明对象本身与let语句在同一行,但let在if块内使用会导致范围问题.)
我正在用 C# 编写 ASP.NET Web API 2。我想要的是一个包罗万象的方法,它将针对传入我的 Web API 的每个请求执行。
如果该方法返回 null,则应继续原来的路由,寻找正确的方法。但是,如果该方法返回 HTTPResponseMessage,则服务器应返回该响应,而不继续进行正常路由。
用例是处理可能影响整个 API 的各种场景的能力。例如:禁止单个 IP 地址、阻止(或白名单)某些用户代理、处理 API 调用计数(例如,某人只能向任何人发出 X 请求)API 方法发出 X 个请求)。
我现在能想到的唯一方法就是在我为 API 编写的每个新方法中逐字包含一个方法调用。例如,
[HttpGet]
public HttpResponseMessage myNewMethod()
{
// I want to avoid having to do this in every single method.
var check = methodThatEitherReturnsResponseOrNull(Request);
if (check != null) return (HttpResponseMessage)check;
// The method returned null so we go ahead with normal processing.
...
}
Run Code Online (Sandbox Code Playgroud)
有什么方法可以在路由中实现这一点吗?