繁体   English   中英

Python 包含的全局变量正在运行整个 function(文件)- 为什么?

[英]Python included global variable is running whole function (file) - why?

我需要包含从一个文件到另一个文件的全局变量,它包括整个 function...我不知道为什么???

我的源文件 create_repo.py:

def create_repository(repository_name):
    headers = {
        'Authorization': 'Basic' +personal_access_token,
        'Content-Type': 'application/json',
        'User-Agent': 'Chrome'
            }

    payload = json.dumps({
        "project": "xxxxx",
        "name": repository_name
                        })



    global repository_id
    response = requests.request("POST", base_url, headers=headers, data=payload, 
    auth=HTTPBasicAuth("yyyy", personal_access_token))
    print(response.text)
    repository_id = response.text[6:44]
    print("ID of the new repository:" ,repository_id)
    



if __name__== "__main__":
    create_repository(sys.argv[1])

和同一目录中的第二个文件:

import create_repo
       print(create_repo.repository_id)

这告诉我错误:AttributeError: module 'create_repo' has no attribute 'repository_id'

如果不在“主要”功能中,它将包含整个文件 create_repo.py 并尝试再次创建存储库......

我尝试了多种设置,例如 from create_repo import * 或 from create_repo import repository_id 等......没有任何效果。

所以我按照你告诉我的那样进行了更改(函数内部没有定义),现在我遇到了这个问题::“1”,“innerException”:null,“消息”:“(正在尝试再次创建现有存储库策略文件,但它已经在 create_repo.py 文件中创建)

创建_repo.py

headers = {
'Authorization': 'Basic' +personal_access_token,
'Content-Type': 'application/json',
'User-Agent': 'Chrome'
      }

 payload = json.dumps({
 "project": "xxxxx",
  "name": repository_name
                 })

 response = requests.request("POST", base_url, headers=headers, 
data=payload, auth=HTTPBasicAuth("yyyy", personal_access_token))
print(response.text)
global repository_id
repository_id = response.text[6:44]
print("ID of the new repository:" ,repository_id)

和政策文件

from create_repo import *
print(repository_id)

尝试使用以下代码。

在文件create_repo.py

# add the necessary import here
import ...

repository_id = ""

def create_repository(repository_name):
    headers = {
        'Authorization': 'Basic' +personal_access_token,
        'Content-Type': 'application/json',
        'User-Agent': 'Chrome'
            }

    payload = json.dumps({
        "project": "xxxxx",
        "name": repository_name
                        })



    global repository_id
    response = requests.request("POST", base_url, headers=headers, data=payload, 
    auth=HTTPBasicAuth("yyyy", personal_access_token))
    print(response.text)
    repository_id = response.text[6:44]
    print("ID of the new repository:" ,repository_id)

在文件policies.py:

import create_repo

if __name__== "__main__":
    create_repo.create_repository(sys.argv[1])
    print(create_repo.repository_id)

我已将if __name__== "__main__":create_repo.pypolicies.py

显然你必须执行policies.py而不是create_repo.py

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM