代码:
#!/usr/bin/python
src = """
print '!!!'
import os
"""
obj = compile(src, '', 'exec')
eval(obj, {'__builtins__': False})
Run Code Online (Sandbox Code Playgroud)
我得到输出:
!!!
Traceback (most recent call last):
File "./test.py", line 9, in <module>
eval(obj, {'__builtins__': False})
File "", line 3, in <module>
ImportError: __import__ not found
Run Code Online (Sandbox Code Playgroud)
'print'和'import'都是语言结构.为什么'eval'限制使用'import'但不限制'print'?
PS我正在使用python 2.6
更新:问题不是"为什么导入不起作用?" 但"为什么印刷工作?" 是否有一些架构限制或其他?
C++ 03 $ 13.6/1-"[...]如果有一个用户编写的候选人具有与内置候选操作员函数相同的名称和参数类型,则内置操作符函数被隐藏,不包括在内在候选函数集中."
我不确定标准的引用意图.是否可以定义与内置运算符具有相同名称和类型的用户定义候选函数?
例如,下面显然是错误的.
int operator+(int)
Run Code Online (Sandbox Code Playgroud)
那么这句话是什么意思呢?
只是在linux内核中看到这个结构,我无法得到它的意思.
110 return unlikely(sl->sequence != start);
Run Code Online (Sandbox Code Playgroud)
我知道likely/ unlikely是用__builtin_expect这里描述的功能制作的:http:
//gcc.gnu.org/onlinedocs/gcc/Other-Builtins.html
您可以使用__builtin_expect为编译器提供分支预测信息.
但是对于无条件分支,什么样的分支预测提示是可能的?
是否有一个内置的python与一组列表的tupler相同,或类似的东西:
def tupler(arg1, *args):
length = min([len(arg1)]+[len(x) for x in args])
out = []
for i in range(length):
out.append(tuple([x[i] for x in [arg1]+args]))
return out
Run Code Online (Sandbox Code Playgroud)
所以,例如:
tupler([1,2,3,4],[5,6,7])
Run Code Online (Sandbox Code Playgroud)
收益:
[(1,5),(2,6),(3,7)]
Run Code Online (Sandbox Code Playgroud)
或者也许有适当的pythony方式这样做,还是有类似的发电机???
我正在写一个strcmp bash内置.编译很好,但是当我尝试启用它时,我得到:
$ enable -f ./strcmp strcmp
bash: enable: cannot open shared object ./strcmp: ./strcmp: only ET_DYN and ET_EXEC can be loaded
Run Code Online (Sandbox Code Playgroud)
我内置的重要部分:
strcmp_builtin (list)
WORD_LIST *list;
char *strcmp_doc[] = {
(char *)NULL
};
struct builtin strcmp_struct = {
"strcmp", /* builtin name */
strcmp_builtin, /* function implementing the builtin */
BUILTIN_ENABLED, /* initial flags for builtin */
strcmp_doc, /* array of long documentation strings. */
"strcmp 'string 1' 'string 2'", /* usage synopsis; becomes short_doc */
0 /* reserved …Run Code Online (Sandbox Code Playgroud) 在js中是否有一种方法可以列出所有内置函数和参数列表中的一些信息?我无法真正找到任何有关反射的东西来做这种事情
编辑:Math.sin等函数实际上是我要列出的函数,实际上是所有内置函数.
如何查看所有zsh设置的当前值?
例如,我目前没有设置HISTSIZE和SAVEHIST,所以env | grep HIST并set | grep HIST没有显示任何内容.那么我如何才能看到正在使用的默认值?
有一种简单的方法可以ltrim()用来删除匹配的单个实例而不是所有匹配吗?
我循环遍历字符串数组,我想删除第一个,也就是第一个匹配(在这种情况下是元音):
ltrim($value, "aeiouyAEIOUY");
Run Code Online (Sandbox Code Playgroud)
默认行为是字符串aardvark或Aardvark将被修剪为"rdvark".我想要结果"ardvark".
我不会以任何方式使用ltrim,但它似乎是最接近的内置PHP函数.这将是很好的,ltrim并rtrim有一个可选参数"限制",只是说...... :)
我试图创建一个覆盖cd命令的别名.这将在"真实"之前和之后执行脚本cd.
这是我到目前为止:
alias cd="echo before; cd $1; echo after"
这会执行echo before,echo after command但它总是更改目录~
我该如何解决这个问题?
cd(){ echo before; cd $1; echo after; }然而我也尝试过它"在之前"重复回声.
>>all([])
True
>>all([[]])
False
>>all([[[]]])
True
>>all([[[[]]]])
True
Run Code Online (Sandbox Code Playgroud)
all()的文档读取它返回True是所有元素都是True /对于一个空列表.为什么所有([[]])评估为False?因为[]是[[]]的成员,所以它也应该评估为True.
built-in ×10
function ×3
python ×3
bash ×2
alias ×1
c ×1
c++ ×1
candidate ×1
default ×1
eval ×1
import ×1
javascript ×1
linux-kernel ×1
optimization ×1
php ×1
printing ×1
python-3.x ×1
reflection ×1
shell ×1
strcmp ×1
string ×1
transpose ×1
zsh ×1