Python如何将函数内局部变量转为全局变量实现外部邮件拼接
Python函数局部变量跨作用域使用方案
方法1:使用global关键字声明全局变量(直接匹配你的需求)
在每个函数内部,对需要暴露到全局的变量提前用global关键字声明,函数执行后对应变量就会成为全局变量,可以在函数外部直接访问。
完整实现代码:
# 定义采集年龄的函数 def func1(): global age age = input("tell me your age : ") # 定义采集体重的函数 def func2(): global weight weight = input("tell me your weight : ") # 定义采集生日的函数 def func3(): global birthday birthday = input("tell me your birthday : ") # 先调用所有函数完成全局变量赋值 func1() func2() func3() # 函数外部拼接邮件正文 mail_body = age + weight + birthday
注意:必须先执行完三个函数的调用,再做邮件正文拼接,否则会触发变量未定义的运行时报错。
方法2:函数返回值传值(更推荐的模块化写法)
全局变量会提升代码的调试、维护成本,编写模块化脚本时更推荐让每个函数把内部采集到的值作为返回值抛出,在函数外部接收返回值后再做拼接,完全不需要修改全局命名空间:
# 定义采集年龄的函数 def func1(): return input("tell me your age : ") # 定义采集体重的函数 def func2(): return input("tell me your weight : ") # 定义采集生日的函数 def func3(): return input("tell me your birthday : ") # 外部接收各函数的返回值 age = func1() weight = func2() birthday = func3() # 拼接邮件正文 mail_body = age + weight + birthday
这种写法每个函数职责单一,变量作用域清晰,后续如果需要修改采集逻辑、调整拼接规则,不会出现全局变量意外被篡改的问题,是模块化脚本的常规实现方式。
内容的提问来源于stack exchange,提问作者Dave dave
相关产品推荐
相关产品推荐

