[当我运行它时,它照常运行,但似乎重复一次。为什么会发生这种情况?

问题描述 投票:0回答:1

[每当我运行此文件时,我都会在与该项目相同的文件夹中找到一个“ pycache”文件,并且仅在该项目中。

def list_name():
    from project_name import name_sorter as a
    list1 = []
    name = a()
    if name is False:
        return False
    else:
        list1.append(name)
        return list1[list1.index(name)]
def name_sorter():
    from project_name import name_digit as def1
    a = input("Full Name: ")
    bool1 = def1(a)
    if bool1 is False:
        return False
    else:
        if a.count(" ") == 1:
            name_first = a.upper()[0] + a.lower()[1:a.find(" ")]
            name_last = a.upper()[a.find(" ")+1] + a.lower()[a.find(" ")+2:]
            return name_first + " " + name_last
        else:
            return False
def name_digit(a, x = 0):
    if len(a) < 3 or len(a) > 60 or " " not in a:
        return False
    else:
        for b in a:
            x += 1
            if b.isdigit():
                return False
            elif x == len(a):
                return True
from project_name import list_name as list1
a = list1()
while a is False:
    print("Invalid")
    a = list1()
print(a)

此外,将所有内容都放在一个文件中还是放在同一个文件夹中的单独文件中更好?

python
1个回答
0
投票

它照常运行,但似乎重复一次。为什么会这样?

是,它运行两次-一次作为脚本运行,一次作为导入模块(从自身导入)。每次遇到import语句时,Python都会查找所需的模块,如果还没有缓存一个模块,它将以一种特殊的方式加载该源文件,从而创建一个可以缓存的module对象。但是,在创建模块时,顶层的所有内容仍会执行]-这就是确定模块内容的方式。

我将一个“ pycache”文件放置在与此项目相同的文件夹中,并且仅与该项目一起使用。

仅与该项目有关,因为这是您要使用import进行的奇怪操作,您不应该这样做。 __pycache__在内部用于提高程序在后续运行中的模块加载时间-这是一种单独的缓存,即使您重新启动Python,它也可以工作(因为它在磁盘上而不是在内存中)。

老实说,这是我第一次见过有人尝试这样的事情:

from project_name import list_name as list1

为了给同一文件内的内容]一个简单的目的>新名称。通常,您无论如何都不应该尝试这样做-如果原始名称有问题,则只需解决该问题-但正确的操作方法应尽可能简单:

list1 = list_name

如果这让您感到惊讶,则需要fix your understanding of how Python deals with the names of things

© www.soinside.com 2019 - 2024. All rights reserved.