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

epggiuax  于 2023-01-14  发布在  Python
关注(0)|答案(2)|浏览(116)

我需要包括从一个文件到另一个文件的全局变量,它包括整个函数...我不知道为什么?
我的源文件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)

这显示错误:属性错误:模块"create_repo"没有属性"repository_id"
如果不在"main"函数中,它将包含整个文件create_repo. py,并尝试再次创建存储库...
我已经尝试了多个设置,如从create_repo导入 * 或从create_repo导入repository_id等...没有工作。

pvcm50d1

pvcm50d11#

所以我做了一个更改(函数内部没有定义),就像你告诉我的那样,现在我遇到了这个问题::“1”,“innerException”:null,“message”:“(正在尝试在策略文件中重新创建现有存储库,但它已在create_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)
cs7cruho

cs7cruho2#

尝试使用以下代码。
在文件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.py移动到policies.py
显然,您必须执行policies.py,而不是create_repo.py

相关问题