小编xjc*_*jcl的帖子

如何在Clang中使用C++模块?

模块是#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)

此外,使用-fmodulesvs no flags 编译此测试文件会产生相同的目标文件.

我究竟做错了什么?

c++ clang c++20 c++-modules

33
推荐指数
2
解决办法
1万
查看次数

每次我在 VSCode 中打开终端时都会出现“setup.py install is deprecated”警告

每次在 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 visual-studio-code

32
推荐指数
4
解决办法
10万
查看次数

Python 日志变量:插值还是格式?

使用 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)

我听说插值是首选的,因为它只评估要打印的字符串,但我还没有验证它是否真的很重要。

python logging

8
推荐指数
1
解决办法
2609
查看次数

Python 中的`await` 是否屈服于事件循环?

我想知道当我们await在异步 Python 代码中使用协程时究竟会发生什么,例如:

await send_message(string)
Run Code Online (Sandbox Code Playgroud)

(1)send_message加入事件循环,调用协程放弃对事件循环的控制,或

(2) 我们直接跳进去 send_message

我读到的大多数解释都指向 (1),因为它们将调用协程描述为exiting。但我自己的实验表明(2)是这种情况:我试图在调用者之后但在被调用者之前运行一个协程,但无法实现这一点。

python asynchronous python-3.x async-await python-asyncio

8
推荐指数
1
解决办法
3195
查看次数

Discord Bot 只能看到自己,不能看到公会中的其他用户

我最近一直在关注本教程以开始使用 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)

python pycharm python-3.x discord discord.py

7
推荐指数
2
解决办法
4937
查看次数

PyQt6 的“QMessageBox.Yes”替代方案

我正在尝试将我的脚本从 PyQt5 移植到 PyQt6。由于这个答案,我已经弄清楚如何移植大部分内容,但是,我遇到了一个问题。

我发现 PyQt6 使用QtWidgets.QMessageBox.StandardButtons.Yes而不是 PyQt5QtWidgets.QMessageBox.Yes.

但是,当检查用户在 QMessageBox 打开后是否按下“是”时,替换QtWidgets.QMessageBox.YesQtWidgets.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 等于 …

python pyqt pyqt5 pyqt6

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

导入错误:无法从分数导入名称 gcd

我正在尝试从名为 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)

我以前有这个工作,我做错了什么?

importerror python-3.x

6
推荐指数
3
解决办法
5123
查看次数

如何在 .kts(Kotlin 脚本)文件中应用插件?

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 pluginbuild.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)

kotlin kotlin-script

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

Shutil.make_archive 线程安全吗?

我正在尝试使用shutil.make_archivepython 中的线程来压缩多个文件夹。我看到较小的文件夹完全压缩,同时另一个线程也停止压缩。

那么,shutil.make_archive线程安全吗?

python archive shutil

5
推荐指数
1
解决办法
1733
查看次数

Docker 镜像会改变吗?如何确保他们不这样做?

Docker 的主要优点之一是可重复性。例如,我们可以准确指定哪些程序和库的安装方式和位置。

然而,我正在努力思考这个问题,但无法全神贯注。我对可重复性的理解是,如果您请求某个标签,您每次都会收到具有相同内容的相同图像。然而,这有两个问题:

  • 即使我尝试尽可能彻底地指定一个版本,例如python:3.8.3,我似乎也无法保证它指向静态的不变图像?可以随时推送新版本。
  • python:3.8.3python:3.8.3-buster是其所基于的 Debian Buster OS 映像的同义词。因此,即使 Python 没有改变,底层操作系统的某些包也可能会发生变化,这是正确的吗?我查看了官方 Dockerfile,它没有指定 Debian Buster 的特定版本或构建。

docker

5
推荐指数
2
解决办法
400
查看次数