小编Lon*_*ner的帖子

如何通过函数继承严格模式("use strict";)?

这是我的代码似乎表明答案是肯定的 - http://jsfiddle.net/4nKqu/

var Foo = function() {
    'use strict'
    return {
        foo: function() {
            a = 10
            alert('a = ' + a)
        }
    }
}()

try {
    Foo.foo()
} catch (e) {
    alert(e)
}
Run Code Online (Sandbox Code Playgroud)

您能否引用标准中的陈述,阐明该陈述'use strict'是否自动应用于我们应用的函数中定义的所有闭包和函数'use strict'

javascript strict use-strict ecmascript-5

7
推荐指数
1
解决办法
1073
查看次数

在Python中真的有一个@运算符来计算点积吗?

这个答案是否正确:https://stackoverflow.com/a/39662710/1175080

引用那个答案.

在Python 3.5中,dot产品有一个新的运算符,所以你可以写一个= A @ B而不是a = numpy.dot(A,B)

它似乎对我不起作用.

$ python3
Python 3.6.1 (default, Apr  4 2017, 09:40:21) 
[GCC 4.2.1 Compatible Apple LLVM 8.1.0 (clang-802.0.38)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> a = [1, 2, 3]
>>> b = [4, 5, 6]
>>> a @ b
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for @: 'list' and 'list'
>>>
Run Code Online (Sandbox Code Playgroud)

但是相关的答案已经获得了6个赞成票,所以我必须遗漏一些东西.您能否提供一个完整的示例,说明如何使用@ …

python operators

7
推荐指数
1
解决办法
2447
查看次数

为什么调用带-m选项的模块将sys.path [0]设置为空字符串?

foo.py在当前目录中有一个python脚本C:\test.

这是代码.

import sys
print('sys.path:', sys.path)
print('sys.argv:', sys.argv)
Run Code Online (Sandbox Code Playgroud)

当我作为脚本执行它时,我看到了这个输出.

C:\test>python foo.py
sys.path: ['C:\\test', 'C:\\Windows\\system32\\python34.zip', 'C:\\Python34\\DLLs', 'C:\\Python34\\lib', 'C:\\Python34', 'C:\\Python34\\lib\\site-packages']
sys.argv: ['foo.py']
Run Code Online (Sandbox Code Playgroud)

但是当我作为模块执行它时,我看到了这个输出.

C:\test>python -m foo
sys.path: ['', 'C:\\Windows\\system32\\python34.zip', 'C:\\Python34\\DLLs', 'C:\\Python34\\lib', 'C:\\Python34', 'C:\\Python34\\lib\\site-packages']
sys.argv: ['C:\\test\\foo.py']
Run Code Online (Sandbox Code Playgroud)

sys.path[0]当我将程序作为模块执行时,为什么变为空字符串?

http://docs.python.org/3.4/library/sys.html#sys.path上的文档提到了这一点:

在程序启动时初始化时,此列表的第一项path [0]是包含用于调用Python解释器的脚本的目录.如果脚本目录不可用(例如,如果以交互方式调用解释器或者从标准输入读取脚本),path [0]是空字符串,它指示Python首先搜索当前目录中的模块.

因此,如果脚本目录不可用,那么它应该设置sys.path[0]''.但就我而言,即使在执行时python -m foo,脚本目录foo也清晰可用.所以它不应该设置sys.path[0]''按文档.相反,它应该设置为'C:\\test'.

它是文档中的错误还是Python解释器中的错误或我理解中的错误?

python python-3.x

6
推荐指数
1
解决办法
690
查看次数

为什么我的 WSGI 应用程序总是在 environ['PATH_INFO'] 中获取 URL 解码路径?

我有一个简单的裸 WSGI 应用程序:

def application(environ, start_response):
    start_response('200 OK', [('Content-Type','text/html')])
    print('PATH_INFO:', environ['PATH_INFO'])
    return [b'<p>Hello World</p>']

if __name__ == '__main__':
    from wsgiref import simple_server
    server = simple_server.make_server('0.0.0.0', 8080, application)
    server.serve_forever()
Run Code Online (Sandbox Code Playgroud)

我提出两个要求:

C:\>curl "http://localhost:8080/<foo>"
<p>Hello World</p>
C:\>curl "http://localhost:8080/%3Cfoo%3E"
<p>Hello World</p>
Run Code Online (Sandbox Code Playgroud)

我得到这个输出:

C:\code>python foo.py
PATH_INFO: /<foo>
127.0.0.1 - - [09/Mar/2014 13:48:39] "GET /<foo> HTTP/1.1" 200 18
PATH_INFO: /<foo>
127.0.0.1 - - [09/Mar/2014 13:48:47] "GET /%3Cfoo%3E HTTP/1.1" 200 18
Run Code Online (Sandbox Code Playgroud)

查看我的应用程序如何获取 URL 解码路径,/<foo>即使在客户端请求时也是如此/%3Cfoo%3E

它表明 wsgiref.simple_server 确保我的应用程序始终获取environ['PATH_INFO'].

但我在 PEP-3333 中找不到记录此行为的任何地方。您能给我指出记录此行为的官方文档吗?

python wsgi python-3.x

6
推荐指数
1
解决办法
1960
查看次数

staticmethod()做了什么魔术,所以静态方法总是在没有实例参数的情况下被调用?

我试图了解静态方法如何在内部工作.我知道如何使用@staticmethod装饰器,但我将避免在这篇文章中使用它,以深入了解静态方法的工作原理并提出我的问题.

从我了解的Python,如果有一类A,然后调用A.foo()调用foo()不带任何参数,而调用A().foo()调用foo()一个说法,其中一个说法是实例A()本身.

但是,在静态方法的情况下,似乎总是foo()在没有参数的情况下调用它是否称为A.foo()A().foo().

证明如下:

>>> class A:
...     x = 'hi'
...     def foo():
...         print('hello, world')
...     bar = staticmethod(foo)
...
>>> A.bar()
hello, world
>>> A().bar()
hello, world
>>> A.bar
<function A.foo at 0x00000000005927B8>
>>> A().bar
<function A.foo at 0x00000000005927B8>
>>> A.bar(1)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: foo() takes 0 positional …
Run Code Online (Sandbox Code Playgroud)

python static-methods python-3.x

6
推荐指数
2
解决办法
208
查看次数

C编译器优化器是否会违反短路并重新排序逻辑AND表达式中操作数的内存访问?

我们知道logical-AND operator(&&)可以保证从左到右的评估.

但我想知道如果编译器优化都不能重新排序存储器存取指令*a,并b->foo在下面的代码,即优化写道,尝试访问指令*b访问之前*a.

(考虑两者ab指向堆中的内存区域.)

if (*a && b->foo) {
  /* do something */
}
Run Code Online (Sandbox Code Playgroud)

有人可能认为这&&会导致序列点,因此编译器必须在访问*a之前发出访问指令*b但在阅读/sf/answers/1048840271/上的接受答案后,我不太确定.如果你看看这个答案,有语句之间分号,他们还建立序列点,因此他们也应该防止重新排序,但答案似乎还有以表明他们需要编译器级别的内存屏障尽管分号的存在.

我的意思是如果你声称&&建立一个序列点,那么对于/sf/answers/1048840271/代码中的分号就是如此.那么为什么代码中需要编译器级别的内存屏障呢?

c logical-operators

6
推荐指数
1
解决办法
229
查看次数

在Go中打印错误对象的正确格式说明符是什么:%s或%v?

这是我的程序。

package main

import (
    "errors"
    "fmt"
)

func main() {
    a := -1
    err := assertPositive(a)
    fmt.Printf("error: %s; int: %d\n", err, a)
    fmt.Printf("error: %v; int: %d\n", err, a)
}

func assertPositive(a int) error {
    if a <= 0 {
        return errors.New("Assertion failure")
    }
    return nil
}
Run Code Online (Sandbox Code Playgroud)

这是输出。

error: Assertion failure; int: -1
error: Assertion failure; int: -1
Run Code Online (Sandbox Code Playgroud)

在此程序中,我使用%s还是%v打印error对象都没有区别。

我有两个问题。

  1. 在打印错误时是否有任何情况会影响%s%v
  2. 在这种情况下使用的正确格式说明符是什么?

error-handling string-formatting go

6
推荐指数
1
解决办法
3109
查看次数

一个大型网站图标可以为所有设备和浏览器服务吗?

关于网站图标的所有讨论都建议创建不同大小的网站图标以针对不同的客户。例如,请参见以下答案:favicon是否必须为32x32或16x16?

我的问题:真的有必要生成这么多不同大小的图标吗?如果我创建了一个大小为200x200的大型图标,该怎么办?我看到各种浏览器(例如Chrome和Firefox)会自动将其缩小以在浏览器选项卡中显示缩小的图标。

那么,如果要选择一个大小为200x200的大型网站图标,会有什么问题?

注意:我希望网站图标可以在符合标准的任何设备浏览器上运行(如果网站图标适用于该图标)。例如,如果iOS Safari违反了标准,那么我对支持它就不会太烦。

favicon image-resizing

6
推荐指数
1
解决办法
1564
查看次数

namespace :: function()声明何时有用?

单个文件示例

这是一个使用命名空间的简单程序.

#include <iostream>

namespace foo {
    void hello();
}

void foo::hello() {
    std::cout << "hello\n";
}

void foo::hello(); // Why is this syntax allowed? When is it useful?

int main() {
    foo::hello();
}
Run Code Online (Sandbox Code Playgroud)

该程序编译良好并产生预期的输出.

$ ./a.out
hello
Run Code Online (Sandbox Code Playgroud)

我想知道void foo::hello();声明什么时候有用?在这个程序中,显然这个声明是多余的.但是由于存在这种语法,这在其他情况下必须有用吗?

双文件示例

这是一个例子,表明void foo::hello();独立的声明是无用的.

// foo.cpp
#include <iostream>

namespace foo {
    void hello();
}

void foo::hello() {
    std::cout << "foo::hello\n";
}
Run Code Online (Sandbox Code Playgroud)
// main.cpp
void foo::hello(); // This does not work!

int main()
{
    foo::hello();
}
Run Code Online (Sandbox Code Playgroud)

尝试编译上述两个文件会导致以下错误:

$ …
Run Code Online (Sandbox Code Playgroud)

c++ namespaces declaration function

6
推荐指数
1
解决办法
158
查看次数

如何初始化用auto关键字声明的循环计数器?

这是我的代码:

#include <iostream>
#include <vector>

void cumulative_sum_with_decay(std::vector<double>& v)
{
    for (auto i = 2; i < v.size(); i++) {
        v[i] = 0.167 * v[i - 2] + 0.333 * v[i - 1] + 0.5 * v[i];
    }
}

void printv(std::vector<double>& v)
{
    std::cout << "{";
    for (auto i = 0; i < v.size() - 1; i++) {
        std::cout << i << ", ";
    }
    std::cout << v[v.size() - 1] << "}\n";
}

int main()
{
    auto v = std::vector<double>{1, 2, …
Run Code Online (Sandbox Code Playgroud)

c++ initialization declaration auto c++11

6
推荐指数
2
解决办法
290
查看次数