小编Jak*_*key的帖子

如果 python 中的字典是可变的,为什么编辑第二个字典中包含的字典不会更改第二个字典?

我是 python 新手,刚刚学习不可变和可变对象(由于我在 MATLAB 和 C# 方面的编码经验有限,我以前从未遇到过这种情况)。

我想知道为什么,如果 python 中的字典是可变的,那么编辑第二个字典中包含的字典不会更改第二个字典吗?

这是一个示例,其中将字典(蝙蝠侠)添加到超级英雄名称字典(super_hero_names)中。当蝙蝠侠后来被更改时,它不会反映在超级英雄名称字典中。如果字典像字符串一样不可变,这对我来说是有意义的,但它们是可变的,那么为什么会发生这种情况呢?

super_hero_names = {
    'Superman' : 'Clark Kent',
    'Spiderman' : 'Peter Parker'
}

batman = {'Batman' : 'Bruce'}

super_hero_names.update(batman)

batman['Batman'] = 'Bruce Wayne' # (edited)

print(super_hero_names)

# Output: {'Superman': 'Clark Kent', 'Spiderman': 'Peter Parker', 'Batman': 'Bruce'}
Run Code Online (Sandbox Code Playgroud)

python dictionary mutable immutability python-3.x

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

PySide2和pyinstaller gui应用程序无法在某些Windows计算机上运行

我使用PySide2作为我的GUI框架和PyInstaller构建了一个小的gui应用程序,以制作一个文件exe文件。

该应用程序可以在某些PC(Windows 7和10)上完美运行,但是在其他PC上则无法启动-向我显示错误消息:

“致命错误!:无法执行脚本pyi_rth_qt5plugins”

我相信它可能不会捆绑Qt5Gui.dll,Qt5Core.dll和Qt5Widgets.dll,但是我不知道如何使用PyInstaller做到这一点。

有谁知道如何解决这个问题?

这是我的.spec文件:

# -*- mode: python -*-

block_cipher = None

a = Analysis(['main.py'],
             pathex=[],
             binaries=[],
             datas=[],
             hiddenimports=[],
             hookspath=[],
             runtime_hooks=[],
             excludes=[],
             win_no_prefer_redirects=False,
             win_private_assemblies=False,
             cipher=block_cipher)
pyz = PYZ(a.pure, a.zipped_data,
             cipher=block_cipher)
exe = EXE(pyz,
          a.scripts,
          a.binaries,
          a.zipfiles,
          a.datas,
          name='Application',
          debug=True,
          strip=False,
          upx=True,
          runtime_tmpdir=None,
          console=True , icon='Images\\Application_icon.ico')
Run Code Online (Sandbox Code Playgroud)

编辑

这是从cmd运行且debug = True时的完整输出。我发现奇怪的是,它是指我在(例如File "c:\users\jake\Projects\Application\venv\lib\site-packages\PyInsta ller\loader\pyimod03_importers.py", line 714, in load_module)上开发应用程序的PC,而不是我正在测试并从中获得此错误消息的PC。

[4588] PyInstaller Bootloader 3.x
[4588] LOADER: executable is C:\Users\User\Desktop\Application.exe
[4588] LOADER: homepath is C:\Users\User\Desktop
[4588] LOADER: _MEIPASS2 is NULL
[4588] …
Run Code Online (Sandbox Code Playgroud)

qt pyinstaller pyside python-3.x pyside2

5
推荐指数
0
解决办法
2085
查看次数

C枚举定义中的按位移位有什么作用?

我是C的新手并想知道,在这种情况下,枚举定义中的按位移位1 << 9是做什么的:

static enum {
    DEAD, LIVE
} state[1 << 9];
Run Code Online (Sandbox Code Playgroud)

c enums bit-shift

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