变量的作用域
变量的作用域是指变量在哪些地方可以被访问到。
局部变量:在函数内部定义的变量,只能在函数内部使用。
def test():
x = 10 # 局部变量
print(x)
test()
print(x) # 报错!x 在函数外部访问不到
全局变量:在函数外部定义的变量,可以在任何地方访问。
x = 10 # 全局变量
def test():
print(x) # 可以访问全局变量
test()
print(x) # 也可以访问
如果在函数内部要修改全局变量,需要用global声明:
x = 10
def test():
global x # 声明 x 是全局变量
x = 20 # 修改全局变量
test()
print(x) # 20
如果不加global,在函数内部修改全局变量会被Python当成创建了一个新的局部变量,不会影响到外部的全局变量。
九、一个我踩过的坑:忘记写括号
这是新手最容易犯的错误,我刚开始学函数的时候,有一次这样写:
def say_hello():
print(“你好!”)
say_hello # 忘记加括号了
运行后什么都没有输出,也没有报错,什么都没有发生。我当时还以为是Python坏了,后来才发现调用函数必须加括号。say_hello只是函数本身,say_hello()才是调用它。
十、综合示例:把体温检测改写成函数
把之前写的体温检测程序改写成函数,加上说明文档和嵌套调用:
这个函数负责获取体温,返回给调用者
def get_temperature():
“”"
获取用户输入的体温
:return: 浮点数体温
“”"
return float(input(“请测量并输入您的体温:”))
def check_temperature(temp, standard=37.5):
“”"
判断体温是否正常
:param temp: 体温值
:param standard: 标准温度,默认37.5
:return: True 表示正常,False 表示异常
“”"
return temp <= standard
def print_result(temp, is_normal):
“”"
打印体温检测结果
:param temp: 体温值
:param is_normal: 是否正常
“”"
print(f"体温测量中,您的体温是:{temp}度")
if is_normal:
print(“体温正常请进!”)
else:
print(“需要隔离!”)
def main():
print(“欢迎来到辽宁!请出示您的健康码以及72小时核酸证明,并配合测量体温。”)
temp = get_temperature()
result = check_temperature(temp)
print_result(temp, result)
main()
一次定义可以反复使用,每个函数只做一件事,代码清晰易读。以后如果想修改体温检测的逻辑,只需要改对应的函数就行了。
小结
今天学的东西,整理成一张速查表:
知识点 作用 示例
def 定义函数 def say_hello():
参数 让函数接收外部数据 def greet(name):
return 返回值给调用者 return a + b
None 表示空值 return None
说明文档 解释函数的作用 “”" 函数说明 “”"
嵌套调用 函数内部调用另一个函数 def a(): b()
局部变量 函数内部定义,只能在内部使用 x = 10 在函数内
全局变量 函数外部定义,任何地方可用 x = 10 在函数外
global 在函数内修改全局变量 global x
什么时候用函数?
一段代码在多个地方重复出现 → 封装成函数
