唯一导入*仅允许在模块级别[重复]

2024-04-03

我正在制作一个实用程序,其中内置了多个程序,但我对程序进行了一些更改,以便在用户提示时重新运行,然后由于某种原因,我面临错误

import * only allowed at module level

这是我的代码

def main():
    
    import os
    import sys
    import time
    import pywhatkit as whatsapp
    from speedtest import Speedtest
    from tkinter import *
    from tkinter import messagebox
    from os import listdir
    from PIL import Image

    print("*"*30)
    print("Utility Build v1: Starting")
    print("*"*30)

    time.sleep(3)

    print("NOTE: Before using this program for repairing corrupted disk, please locate this utility .py file into the corrupted storage. Thanks")

    time.sleep(3)

    print("*"*30)
    print("*"*30)
    print("Commands: Choose by inputting allocated number")

    print("Utility 1: Speed Test")
    print("Utility 2: Whatsapp Message Automation")
    time.sleep(2)
    print("Please Wait...Loading")
    time.sleep(4)
    print("Utility 3: Disk/Removable Storage Repair(a.k.a Dr Corrupt)")
    print("Utility 4: Python .py status monitor")

    print("*"*30)
    print("*"*30)
    print("q = Quit Utility Program")

    input_ = input(": ")

    if input_ == "q":
        exit()
       
    if input_ == "1":

        time.sleep(2)

        print("*"*30)
        print("Speed Test: Starting")
        print("*"*30)
        
        st = Speedtest()

        Download_ = print("Your connection download speed is:", st.download())
        Upload_ = print("Your connection upload speed is:", st.upload())
        Download1_ = st.download()
        Upload1_ = st.upload()

        print("*"*30)
        print("Speed Test: Finishing Up!")
        print("*"*30)

        answer = input("Would you like results? ")

        if answer == "yes":
            print("NOTE: The first 2 digits frm the left is your internet speed")
            time.sleep(2)
            top = Tk()
            top.geometry("100x100")
            messagebox.showinfo("Speed Test: Download", Download1_)
            top.mainloop()

            reply = input("Would like to leave Utility Build(yes) or go to home page?(no) ")

        else:
            reply1 = print("Would like to leave Utility Build(yes) or go to home page?(no) ")
            if reply1 == "yes":
                main()
            else:
                exit()

    if input_ == "2":
        whatsapp.sendwhatmsg("+61450776320", "Hi, this is a test", 0, 0)

    if input_ == "3":
        
        for filename in listdir('./'):
          if filename.endswith('.png'):
            try:
              img = Image.open('./'+filename) # open the image file
              img.verify() # verify that it is, in fact an image
            except (IOError, SyntaxError) as e:
              print('Bad file:', filename) # print out the names of corrupt files

“模块级别”仅意味着脚本中不属于类或函数的部分。您在那里定义的任何名称都会直接进入模块名称空间。

因此,错误消息只是说要移动

def main():
    
    import os
    import sys
    import time
    import pywhatkit as whatsapp
    from speedtest import Speedtest
    from tkinter import *
    from tkinter import messagebox
    from os import listdir
    from PIL import Image

to

import os
import sys
import time
import pywhatkit as whatsapp
from speedtest import Speedtest
from tkinter import *
from tkinter import messagebox
from os import listdir
from PIL import Image

def main():

事实上,解释器只关心那行from tkinter import *。其他的是约定和可读性的问题。

CPython 对函数内部的局部命名空间进行优化,要求解释器预先知道所有局部变量的名称。星号导入可以防止这种情况发生,因为在运行导入模块之前您不知道导入的模块中将包含哪些名称。全局命名空间没有此限制,因此您可以在那里进行星号导入。

Python 是一种供成年人使用的语言。仅仅因为某些东西是“不好的做法”或不可维护并不意味着它是语法错误。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

唯一导入*仅允许在模块级别[重复] 的相关文章

随机推荐

  • 如何使用 ggplot2 在世界地图上绘制单个点?

    在世界地图上 如何绘制单个点 all states lt map data usa p lt p geom polygon data all states aes x long y lat group group legend FALSE
  • 调用 Scan 操作时如何解决(AccessDeniedException):用户:arn:aws:sts ...无权执行:dynamodb:对资源进行扫描..”?

    我正在尝试使用 Elastic Beanstalk 和 Flask 将类似 Instagram 的应用程序部署到 AWS 使用后电子部署命令 我能够访问应用程序主页 这不需要访问 DynamoDB 表 当我尝试登录时 应用程序应访问 Dyn
  • SQL Server 2008 中的 PIVOT/UNPIVOT

    我得到的子 父表如下 主表 MasterID Description 子表 ChildID MasterID Description 使用 PIVOT UNPIVOT 如何在单行中获得如下结果 if MasterID 1 有 x 子记录 M
  • 过早重构? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我们都听说过过早优化 http en wikipedia org wiki Program optimization When to optim
  • 在数据库表中标记已删除的记录

    有时您想将数据库表记录标记为已删除 而不是永久删除它 对吗 你是怎样做的 到目前为止 我一直在使用布尔 已删除 字段 但我不确定这是否是一个好的方法 就是这样 一个布尔字段 指示记录已被删除 我用过几次 我称该字段为IsDeleted 这通
  • 为什么我的 bash 函数返回错误的值?

    fact if 1 eq 1 then return 1 else y expr 1 1 fact y b 1 return b fi echo enter read n fact n echo 这是一个求数字阶乘的程序 输出在 5 以内都
  • 如何读取用户上传的文件,而不将其保存到数据库

    我希望能够读取用户上传的 XML 文件 小于 100kb 但不必先将该文件保存到数据库中 我不需要当前操作之后的文件 其内容被解析并添加到数据库中 但是 解析文件不是问题 由于本地文件可以通过以下方式读取 File read export
  • eclipse sts 4 中没有集成图视图?

    甚至不再有创建 spring bean 配置文件的选项 从 3 9 过渡到 4 的过程中 大量功能消失了 如果是这样的话 似乎他们在 Eclipse 端为 IDE 不可知论牺牲了相当多 Spring Tools 4 不再包含对 Spring
  • NumPy 堆栈或将数组附加到数组

    我从 NumPy 开始 给定两个np arrays queu and new path queu 0 0 0 1 new path 0 0 1 0 2 0 我的目标是得到以下queu queu 0 0 0 1 0 0 1 0 2 0 我试过
  • 如何将github存储库配置为spring云服务器的配置存储库?

    我已经创建了一个 github 存储库https github com Nisarg04 microservices config repo git 我希望将其视为配置存储库 另外 我有一个 Spring Cloud 服务器 它从本地存储库
  • Objective-C 变量...指向自身?

    我在 Apple 的一些用于处理键值观察的示例代码中发现了这种构造 添加观察者时 您可以添加一个上下文 以 void 变量的形式 该上下文可以唯一标识 KVO 调用 如果您希望多个 KVO 调用触发相同的操作 则特别有用 因为单个上下文可以
  • Pandas/Python 中的分块、处理和合并数据集

    有一个很大的数据集 其中包含字符串 我只想使用宽度通过 read fwf 打开它 如下所示 widths 3 7 9 7 tp pandas read fwf file widths widths header None 这会帮助我标记数据
  • 使用 MXnet 时如何保存模型

    我正在使用 MXnet 训练 CNN 在 R 中 并且可以使用以下代码训练模型 不会出现任何错误 model lt mx model FeedForward create symbol network X train iter ctx mx
  • 学习 UML 的最佳来源是什么? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 共享内存上的 spsc_queue

    我尝试了几个小时 这个问题几乎让我发疯 我想创建一个spsc queue在共享内存上 队列中的每个元素都是一个mq item t结构如下 typedef struct mq item t mq item type type union st
  • Eloquent 关系同步也会删除吗?

    更新模型并同步关系时 如果我不传入所有已存在的 id 该关系是否会被删除 你决定 sync有第二个参数 默认为true并负责分离 model gt relationship gt sync 1 2 3 model gt relationsh
  • 从 UIWebView 读取 HTML 内容

    是否可以读取已加载到的网页的原始 HTML 内容UIWebView 如果没有 是否有另一种方法可以从 iPhone SDK 中的网页提取原始 HTML 内容 例如 NET 的等效方法 WebClient openRead 第二个问题其实更容
  • Julia 多次调度失败

    v06 我想写一个需要 2 到 3 个参数的签名 第一个是整数或整数向量 第二个是整数向量或整数矩阵 第三个是整数向量或未指定 我第一次尝试是这样的 function foo a Union Integer Vector Integer b
  • Django 模型与管理器

    不太确定有什么区别 看起来 Manager 所做的只是拥有一堆与模型相关的功能 但这些功能也可以放在模型中 Django 文档对 Manager 的描述如下 Manager 是数据库查询操作的接口 提供给 Django 模型 那么 除了这个
  • 唯一导入*仅允许在模块级别[重复]

    这个问题在这里已经有答案了 我正在制作一个实用程序 其中内置了多个程序 但我对程序进行了一些更改 以便在用户提示时重新运行 然后由于某种原因 我面临错误 import only allowed at module level 这是我的代码