我注意到asyncio/init.py
从 python 3.6 开始使用以下构造:
from .base_events import *
...
__all__ = (base_events.__all__ + ...)
Run Code Online (Sandbox Code Playgroud)
该base_events
符号未在源代码中的任何位置导入,但模块仍包含它的局部变量。
我已经使用以下代码检查了这种行为,并将其放入一个旁边__init__.py
的虚拟对象中test.py
:
test = "not a module"
print(test)
from .test import *
print(test)
Run Code Online (Sandbox Code Playgroud)
不是模块
<module 'testpy.test' from 'C:\Users\MrM\Desktop\testpy\test.py'>
这意味着test
在使用星型导入后变量被隐藏了。
我稍微摆弄了一下,结果发现它不一定是一个星型 import,但它必须在一个 内__init__.py
,而且它必须是相对的。否则模块对象不会被分配到任何地方。
如果没有赋值,从一个不是 的文件运行上面的例子__init__.py
会引发一个NameError
.
这种行为从何而来?这是否已在某处的导入系统规范中进行了概述?__init__.py
必须以这种方式与众不同的原因是什么?它不在参考资料中,或者至少我找不到。
是否可以在另一个类中定义一个私有类并将其用于数组?例如:
class a
{
public:
private:
class b;
b myarray[10];
class b
{
public:
b(int a):a_val (a){}
private:
int a_val;
};
};
Run Code Online (Sandbox Code Playgroud)
忽略公共,我的语法有什么问题吗?
是否也可以在A中创建成员函数来修改b的私有值.例如,myarray [0] .a_val = 5; 如果是这样,这个语法也是正确的吗?
Python 包含一个简单易用的分析器:
>> import cProfile
>> import re
>> cProfile.run('re.compile("foo|bar")')
197 function calls (192 primitive calls) in 0.002 seconds
Ordered by: standard name
ncalls tottime percall cumtime percall filename:lineno(function)
1 0.000 0.000 0.001 0.001 <string>:1(<module>)
1 0.000 0.000 0.001 0.001 re.py:212(compile)
...
Run Code Online (Sandbox Code Playgroud)
如何做完全相同的事情,但是按而tottime
不是排序standardname
?
我的问题源于一个简单的好奇心:
为什么在x64中某些操作码是无效的(例如06,07),而在x86中用于相当基本的指令(06和07是推送和弹出)?我认为那些最简单的指令在两种架构中都能很好地完成.
为什么他们在x64中禁用了一些简单的指令?他们为什么不工作?为什么他们禁用某些操作码,在操作码列表中创建漏洞,何时可以将它们分配给x64版本的指令?
参考:
我正在努力在linux上创建一个简单的shell.我可以创建一些东西来学习如何使用基本系统调用.
场景:命令中的用户类型,按Tab键(因此shell自动完成其命令),弹出自动完成的命令(或建议),用户按Enter键,命令evals并执行.
就像在bash中一样.
我已经想出如何进行evals,将命令转换为标记,使用管道和东西执行它.我无法弄清楚的是输入部分.即那些标签击键.
我知道我有什么选择:
getc()
- 分别获取每个字符,将其存储在缓冲区中.无法弄清楚如何获得Tab键击,因为它会暂停执行,直到它看到'\n'或Ctrl + D. 有点贵,因为命令中的每个字符都会有1个getc().另外,我将不得不处理缓冲区重新分配,摊销......嘘......scanf("%s")
- 太担心缓冲区溢出.我不能得到那些标签击键.暂停执行read()
(来自unistd.h) - 可能是我不想做的事情.但是我看到这里的人说使用它来做这件事真的很痛苦.我检查了.它是.getline()
- 无法获得Tab键击.我查看了bash源代码,看看它是如何处理输入的,以及OH MY GOD.有450行代码专门用来做这个简单的事情(input.c文件).
真的没有比这更简单的解决方案吗?我不想使用ncurses,我不关心可移植性,我只是想实现一个目标:获取用户输入并知道他何时按Tab键.尽可能少地努力,优雅地做到这一点.
TLDR:即使在设置ulimit
并查看apport
. 厌倦了努力工作以获得单个回溯。底部的问题。
我在这里做了一个小噩梦。我目前正在做一些 c 编码,在我的情况下总是意味着一公吨的段错误。大多数情况下,我几乎可以毫无问题地重现该错误,但今天我遇到了麻烦。
我的代码不一致地产生段错误。我需要它正在谈论的核心转储。
所以我正在寻找一个核心转储,为了我的小宝贝。那是我开始拔头发的时候。
我的直觉告诉我,核心转储文件应该存储在工作目录中的某个地方——显然不是这样。看完这个,我高兴地键入:
ulimit -c 750000
Run Code Online (Sandbox Code Playgroud)
没事了。我的程序的输出告诉我它进行了核心转储 - 但我在 cwd 中找不到它。因此,在阅读本文后,我了解到我应该对apport
和做一些事情core_pattern
。
core_pattern
获得一个核心转储的改变似乎有点太多,我真的不想惹它,因为我知道我以后会忘记它。我倾向于把这些事情搞得一团糟。
Apport 具有这种神奇的特性,可以选择哪些核心转储有价值,哪些没有价值。它的日志告诉我...
ERROR: apport (pid 7306) Sun Jan 3 14:42:12 2016: executable does not belong to a package, ignoring
Run Code Online (Sandbox Code Playgroud)
...我的程序不够好。
let_me_look_at_the_core_dump <program name>
这样的东西会很棒。我已经有点秃顶了,所以任何帮助将不胜感激。
我试图paramiko
通过netcat来弹回SSH会话:
MyLocalMachine ----||----> MiddleMachine --(netcat)--> AnotherMachine
('localhost') (firewall) ('1.1.1.1') ('2.2.2.2')
Run Code Online (Sandbox Code Playgroud)
MyLocalMachine
到的
直接连接AnotherMachine
MiddleMachine
将不接受任何尝试打开与之连接的Direct-tcpip通道的尝试AnotherMachine
sshpass
PExpect
我可以使用以下代码部分实现此目的:
cli = paramiko.SSHClient()
cli.set_missing_host_key_policy(paramiko.AutoAddPolicy())
proxy = paramiko.ProxyCommand('ssh user@1.1.1.1 nc 2.2.2.2 22')
cli.connect(hostname='2.2.2.2', username='user', password='pass', sock=proxy)
Run Code Online (Sandbox Code Playgroud)
问题是,因为ProxyCommand
使用subprocess.Popen
运行给定的命令,它要求我给密码“特设”,从用户输入(也,它需要在操作系统MyLocalMachine
已ssh
安装-这是情况并非总是如此)。
由于ProxyCommand
的方法(recv
,send
)是对适当POpen
方法的简单绑定,我想知道是否有可能欺骗paramiko客户端使用另一个客户端的会话作为代理?
我的 django 模型之一中有两个 IntegerChoices 子类,它们定义 api 的票证优先级。我希望当优先级和状态在我的网页上呈现时显示标签,但是当使用 api 发送与标签相对应的整数时。到目前为止,这是我的代码:
class Ticket(models.Model):
class Statuses(models.IntegerChoices):
OPEN = 2, 'Open'
PENDING = 3, 'Pending'
RESOLVED = 4, 'Resolved'
CLOSED = 5, 'Closed'
class Priorities(models.IntegerChoices):
LOW = 1, 'Low'
MEDIUM = 2, 'Medium'
HIGH = 3, 'High'
URGENT = 4, 'Urgent'
priority = models.IntegerField(default=Priorities.LOW, choices=Priorities.choices)
status = models.IntegerField(default=Statuses.OPEN, choices=Statuses.choices)
Run Code Online (Sandbox Code Playgroud)
然后我尝试通过访问我的应用程序中的标签
<b>Priority: </b> {{ ticket.priority.label }} <br>
<b>Status:</b> {{ ticket.status.label }}
Run Code Online (Sandbox Code Playgroud)
但什么也没有出现。似乎新 IntegerChoices 类的 Django 文档非常少,并且不清楚标签函数如何工作。
我还尝试像这样渲染标签:
OPEN = 2, _('Open')
Run Code Online (Sandbox Code Playgroud)
但后来我收到一条错误消息“名称'_'未定义”
对于我需要做的事情有什么正确的指示吗?
更新
对于任何需要答案的人,我已经找到了。 …
python django django-templates django-models web-development-server
如何删除每个字母 退格键按钮上每个 keydown 处的段落元素的文本内容,如输入字段一次删除一个字母。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<title>repl.it</title>
<link href="style.css" rel="stylesheet" type="text/css" />
</head>
<body>
<p></p>
<script>
let p = document.querySelector("p")
document.addEventListener("keydown",function(e){
if(e.key === "Backspace"){
p.textContent-=e.key;
}else{
p.textContent+=e.key
}
})
</script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)