有没有更好的方法来获取JS中的变量类型typeof
?当你这样做时它工作正常:
> typeof 1
"number"
> typeof "hello"
"string"
Run Code Online (Sandbox Code Playgroud)
但是当你尝试时它没用了:
> typeof [1,2]
"object"
>r = new RegExp(/./)
/./
> typeof r
"function"
Run Code Online (Sandbox Code Playgroud)
我知道instanceof
,但这要求你事先知道这种类型.
> [1,2] instanceof Array
true
> r instanceof RegExp
true
Run Code Online (Sandbox Code Playgroud)
有没有更好的办法?
我知道我可以使用类似于string[3:4]
在Python中获取子字符串的东西,但3是什么意思somesequence[::3]
?
在Python中,可以做到:
a, b = 1, 2
(a, b) = 1, 2
[a, b] = 1, 2
Run Code Online (Sandbox Code Playgroud)
我检查了生成的字节码dis
,它们是相同的.
那么为什么要这样呢?我是否需要其中一个而不是其他的?
我想打印一个进度条,如下所示:
[# ] 1%
[## ] 10%
[########## ] 50%
Run Code Online (Sandbox Code Playgroud)
但是这些应该全部打印到终端中的同一行而不是新行.我的意思是每个新行应该取代之前的,它不是用于print()
代替println()
.
我怎么能用Java做到这一点?
在C#中是否有字符串的heredoc表示法,最好是我不必转义任何内容(包括双引号,这是逐字字符串中的怪癖)?
鉴于:
struct objStruct {
int id;
int value;
};
typedef struct objStruct Object;
Run Code Online (Sandbox Code Playgroud)
是否有分配和初始化对象的快捷方式,比如C++构造函数?
它甚至可以是预处理器宏.无论是什么使代码更短,更可读:
Object *newObj = malloc(sizeof(Object));
// successful allocation test snipped
newObj->id = id++;
newObj->value = myValue;
Run Code Online (Sandbox Code Playgroud) 在Java中,当一个类重写.toString()
并且你这样做System.out.println()
时会使用它.
class MyObj {
public String toString() { return "Hi"; }
}
...
x = new MyObj();
System.out.println(x); // prints Hi
Run Code Online (Sandbox Code Playgroud)
如何在C++中实现这一点,以便:
Object x = new Object();
std::cout << *x << endl;
Run Code Online (Sandbox Code Playgroud)
会输出一些我选择的有意义的字符串表示Object
吗?
考虑以下功能:
def fact1(n):
if n < 2:
return 1
else:
return n * fact1(n-1)
def fact2(n):
if n < 2:
return 1
return n * fact2(n-1)
Run Code Online (Sandbox Code Playgroud)
它们应该是等价的.但是有一个性能差异:
>>> T(lambda : fact1(1)).repeat(number=10000000)
[2.5754408836364746, 2.5710129737854004, 2.5678811073303223]
>>> T(lambda : fact2(1)).repeat(number=10000000)
[2.8432059288024902, 2.834425926208496, 2.8364310264587402]
Run Code Online (Sandbox Code Playgroud)
没有的版本else
慢了10%.这非常重要.为什么?
我的XML解析函数的简化版本在这里:
import xml.etree.cElementTree as ET
def analyze(xml):
it = ET.iterparse(file(xml))
count = 0
for (ev, el) in it:
count += 1
print('count: {0}'.format(count))
Run Code Online (Sandbox Code Playgroud)
这会导致Python耗尽内存,这并没有多大意义.我实际存储的唯一东西是count,一个整数.为什么这样做:
看到内存和CPU使用率突然下降?这是Python的惊人崩溃.至少它给了我一个MemoryError
(取决于我在循环中做了什么,它给了我更多随机错误,比如一个IndexError
)和堆栈跟踪而不是段错误.但为什么会崩溃?