我是Python3和编码的新手。我迷上了一个简单的功能。
import datetime
date = str(datetime.date.today())
mail = ""
text = (f"""
some text {mail}
some text {date}
some text
""")
print(text)
def get_deadline_date():
mail = "a@a.com"
print(text)
我有
some text
some text 2019-03-21
some text
some text
some text 2019-03-21
some text
我无法更改text变量。 它应该打印:
some text a@a.com
some text 2019-03-21
some text
据我了解,我犯了一个简单的错误,但我无法弄清楚。 我尝试过,
import datetime
date = str(datetime.date.today())
mail = ""
text = (f"""
some text {mail}
some text {date}
some text
""")
print(text)
def get_deadline_date():
global mail
mail = "a@a.com"
get_deadlin
它给出了相同的输出。
答案 0 :(得分:1)
您的函数已定义但未执行。而且,如果执行了它,则不会更改mail
的值,因为它具有自己的变量名称空间,因此可以访问mail
但不能设置它。您在此处执行的操作是声明一个新变量,该变量在该函数中也称为mail
。最重要的是,您更改mail
的值时,您的文本已经设置好,不会更新。我建议这种解决方案:
text = "some text {mail}\n" \
"some text {date}\n" \
"some text"
def make_text(text, date):
mail = "a@a.com"
return text.format(mail=mail, date=date)
text = make_text(text=text, date=date.today())
您可能还想为设置mail
和编写文本提供单独的功能,但请记住将您制作的新mail
返回外部范围。
答案 1 :(得分:0)
mail
是局部变量(起作用)不好,但是您的解决方案应该是
import datetime
date = str(datetime.date.today())
mail = ""
text = """
some text {0}
some text {1}
some text
""".format
print(text(mail, date))
def get_deadline_date():
global mail
mail = "a@a.com"
get_deadline_date()
print(text(mail, date))
避免全局变量
取消设计代码以避免全局变量,请使用函数参数并返回值。