模块是#includes的替代品.Clang有一个完整的C++实现.如果我现在想使用Clang使用模块,我该怎么办?
运用
import std.io;
Run Code Online (Sandbox Code Playgroud)
在C++源文件中还没有工作(编译),因为模块的规范(包括语法)不是最终的.
该锵文件指出,经过时-fmodules
标志,#包括将被改写到相应的进口.但是,检查预处理器会另外建议(test.cpp只包含#include <stdio.h>
一个空的main):
$ clang++-3.5 -fmodules -E test.cpp -o test
$ grep " printf " test
extern int printf (const char *__restrict __format, ...);
Run Code Online (Sandbox Code Playgroud)
此外,使用-fmodules
vs no flags 编译此测试文件会产生相同的目标文件.
我究竟做错了什么?
每次在 VSCode 上启动终端时,都会收到以下提示。Terminal.app 上不会发生这种情况。
/usr/local/lib/python3.9/site-packages/setuptools/command/install.py:34:
SetuptoolsDeprecationWarning: setup.py install is deprecated. Use build and pip
and other standards-based tools.
Run Code Online (Sandbox Code Playgroud)
我该如何解决这个问题?
使用 Python 记录变量的推荐方法logging
是什么,为什么更好?
旧式插值:
apple = "green"
logger.debug("apple is %s", apple)
Run Code Online (Sandbox Code Playgroud)
或者
新风格 .format()
logger.debug("apple is {}".format(apple))
Run Code Online (Sandbox Code Playgroud)
我听说插值是首选的,因为它只评估要打印的字符串,但我还没有验证它是否真的很重要。
我想知道当我们await
在异步 Python 代码中使用协程时究竟会发生什么,例如:
await send_message(string)
Run Code Online (Sandbox Code Playgroud)
(1)send_message
加入事件循环,调用协程放弃对事件循环的控制,或
(2) 我们直接跳进去 send_message
我读到的大多数解释都指向 (1),因为它们将调用协程描述为exiting。但我自己的实验表明(2)是这种情况:我试图在调用者之后但在被调用者之前运行一个协程,但无法实现这一点。
我最近一直在关注本教程以开始使用 Discord 的 API。不幸的是,当我得到关于打印公会中所有用户的部分时,我碰壁了。
当我尝试打印所有用户的姓名时,它只打印机器人的名称,不打印其他任何内容。作为参考,公会共有六个用户。该机器人具有管理员权限。
import os
import discord
TOKEN = os.environ.get('TOKEN')
client = discord.Client()
@client.event
async def on_ready():
for guild in client.guilds:
print(guild, [member.name for member in guild.members])
client.run(TOKEN)
Run Code Online (Sandbox Code Playgroud) 我正在尝试将我的脚本从 PyQt5 移植到 PyQt6。由于这个答案,我已经弄清楚如何移植大部分内容,但是,我遇到了一个问题。
我发现 PyQt6 使用QtWidgets.QMessageBox.StandardButtons.Yes
而不是 PyQt5QtWidgets.QMessageBox.Yes
.
但是,当检查用户在 QMessageBox 打开后是否按下“是”时,替换QtWidgets.QMessageBox.Yes
为QtWidgets.QMessageBox.StandardButtons.Yes
不起作用(请检查下面的示例)。
例子:
PyQt5:
reply = QtWidgets.QMessageBox()
reply.setText("Some random text.")
reply.setStandardButtons(QtWidgets.QMessageBox.Yes | QtWidgets.QMessageBox.No)
x = reply.exec_()
if x == QtWidgets.QMessageBox.Yes:
print("Hello!")
Run Code Online (Sandbox Code Playgroud)
打印“你好!” 这里工作正常。(16384 == 16384)
PyQt6:
reply = QtWidgets.QMessageBox()
reply.setText("Some random text.")
reply.setStandardButtons(QtWidgets.QMessageBox.StandardButtons.Yes |
QtWidgets.QMessageBox.StandardButtons.No)
x = reply.exec()
if x == QtWidgets.QMessageBox.StandardButtons.Yes:
print("Hello!")
Run Code Online (Sandbox Code Playgroud)
“你好!” 这里根本不打印。(16384 != StandardButtons.yes)
我知道我可以这样做:
x = reply.exec()
if x == 16384:
print("Hello!")
Run Code Online (Sandbox Code Playgroud)
因为,按“是”后,QMessageBox 等于 …
我正在尝试从名为 fractions 的模块中导入名为 gcd 的函数from fractions import gcd
。出于某种原因,PyCharm 抛出了一个 ImportError:
from fractions import gcd
ImportError: cannot import name 'gcd' from 'fractions'
Run Code Online (Sandbox Code Playgroud)
我以前有这个工作,我做错了什么?
Kotlin 脚本 ( .main.kts
) 文件的想法是在一个独立文件中提供可执行的 Kotlin 代码,这对于编写脚本或在 StackOverflow 上共享代码片段时非常方便。与此相反,目前几乎所有 Java/Kotlin 都使用具有神秘构建文件和深层文件夹结构的构建系统(例如 gradle)。
虽然我非常喜欢 Kotlin 脚本的想法,但它似乎很少被使用,StackOverflow 上只有 22 个问题,文档极其稀疏,Google 结果也很少。我可以使用@file:DependsOn
实际脚本内部而不是传统的构建文件来引入依赖项:
build.gradle
:
dependencies {
implementation 'org.jetbrains.kotlinx:kotlinx-serialization-json:1.2.0'
}
Run Code Online (Sandbox Code Playgroud)
foo.main.kts
:
@file:DependsOn("org.jetbrains.kotlinx:kotlinx-serialization-json:1.2.0")
Run Code Online (Sandbox Code Playgroud)
但是,我找不到在我的.main.kts
文件中使用“应用插件”的方法。我在网上找到的任何代码片段都没有使用它。
build.gradle
:
apply plugin: 'kotlinx-serialization'
Run Code Online (Sandbox Code Playgroud)
foo.main.kts
:
???
Run Code Online (Sandbox Code Playgroud)
作为参考,我在下面附上了 MWE。错误消息表示该类不可序列化,但正如在这个问题中Node
指出的那样,该消息具有误导性并且缺少实际问题,我不知道如何在文件之外使用: apply plugin
build.gradle
dependencies {
implementation 'org.jetbrains.kotlinx:kotlinx-serialization-json:1.2.0'
}
Run Code Online (Sandbox Code Playgroud)
在 Ubuntu 上运行:
@file:DependsOn("org.jetbrains.kotlinx:kotlinx-serialization-json:1.2.0")
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用shutil.make_archive
python 中的线程来压缩多个文件夹。我看到较小的文件夹完全压缩,同时另一个线程也停止压缩。
那么,shutil.make_archive
线程安全吗?
Docker 的主要优点之一是可重复性。例如,我们可以准确指定哪些程序和库的安装方式和位置。
然而,我正在努力思考这个问题,但无法全神贯注。我对可重复性的理解是,如果您请求某个标签,您每次都会收到具有相同内容的相同图像。然而,这有两个问题:
python:3.8.3
,我似乎也无法保证它指向静态的不变图像?可以随时推送新版本。python:3.8.3
python:3.8.3-buster
是其所基于的 Debian Buster OS 映像的同义词。因此,即使 Python 没有改变,底层操作系统的某些包也可能会发生变化,这是正确的吗?我查看了官方 Dockerfile,它没有指定 Debian Buster 的特定版本或构建。python ×6
python-3.x ×3
archive ×1
async-await ×1
asynchronous ×1
c++ ×1
c++-modules ×1
c++20 ×1
clang ×1
discord ×1
discord.py ×1
docker ×1
importerror ×1
kotlin ×1
logging ×1
pycharm ×1
pyqt ×1
pyqt5 ×1
pyqt6 ×1
shutil ×1