[英]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.py
到policies.py
。
显然你必须执行policies.py
而不是create_repo.py
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.