为什么这个Python函数运行两次?

为什么这个Python函数运行两次?,python,Python,当我在Pycharm Community 2017.1.1中运行此程序时,它会执行两次 def site(): while True: site = input("Which datacenter are you putting this in? (One at a time): ") if site == 'ASH' or site == 'Ashburn' or site == 'ASHBURN': core_ip = 'y.

当我在Pycharm Community 2017.1.1中运行此程序时,它会执行两次

def site():

    while True:
        site = input("Which datacenter are you putting this in? (One at a time): ")
        if site == 'ASH' or site == 'Ashburn' or site == 'ASHBURN':
            core_ip = 'y.y.y.y'
            break
        elif site == 'CLT' or site == 'Charlotte' or site == 'CHARLOTTE':
            core_ip = 'x.x.x.x'
            break
        else:
            print ("That can't be it. Sorry, maybe you mistyped?")

    return core_ip

print (site())
输出:

$ python3.5 site.py
Which datacenter are you putting this in? (One at a time): ASH
x.x.x.x
Which datacenter are you putting this in? (One at a time): CLT
y.y.y.y
但是如果我从CLI运行它,它运行得非常完美

在评论中解决

所以,有几件事:@zmo-好建议。我实现了解决命名问题的方法,我将函数更改为site_ip。然后我删除了sites.py文件,并将其重建为find_core_ip.py,现在它可以工作了史蒂夫B

在评论中解决

所以,有几件事:@zmo-好建议。我实现了解决命名问题的方法,我将函数更改为site_ip。然后我删除了sites.py文件,并将其重建为find_core_ip.py,现在它可以工作了史蒂夫B


我不知道pycharm的名字,因为我不使用它。但是您可以通过在('ash','ashburn')中执行
if site.lower()来简化代码。
elif site.lower()位于('clt','夏洛特')
。也许它以某种方式弄乱了路径,导致Python加载它而不是模块。尝试将其重命名为其他名称。您确实有一个与函数同名的变量,它也是一个内置Python模块,并且您的文件也是
site.py
我要做的第一件事是更改变量名site,因为它可能与函数名发生冲突(尽管不太可能)。因此,有几件事:@zmo-好建议。我实现了解决命名问题的方法,我将函数更改为site_ip。然后我删除了sites.py文件,并将其重建为find_core_ip.py,现在它可以工作了。我不知道pycharm是什么,因为我没有使用它。但是您可以通过在('ash','ashburn')中执行
if site.lower()来简化代码。
elif site.lower()位于('clt','夏洛特')
。也许它以某种方式弄乱了路径,导致Python加载它而不是模块。尝试将其重命名为其他名称。您确实有一个与函数同名的变量,它也是一个内置Python模块,并且您的文件也是
site.py
我要做的第一件事是更改变量名site,因为它可能与函数名发生冲突(尽管不太可能)。因此,有几件事:@zmo-好建议。我实现了解决命名问题的方法,我将函数更改为site_ip。然后我删除了sites.py文件,并将其重建为find_core_ip.py,现在它可以工作了。