Python函数基础

基本定义

作用:封装代码,高效的代码重用

使用步骤

  • 定义函数

    def 函数名():
        代码1
        代码2
        ...
    
  • 调用函数

    函数名()
    
  • 函数的参数:函数调用时候可以传入的真实数据,增大函数使用的灵活性

    • 形参:函数定义时书写的参数(非真实数据)
    • 实参:函数调用时书写的参数(真实数据)
  • 函数的返回值

    • 作用:函数调用后,返回需要的计算结果

    • 写法

      return 表达式
      
  • 函数的说明文档

    • 作用:保存函数解释说明的信息

    • 写法

      def 函数名():
          """函数说明文档"""
      
  • 函数的嵌套调用:一个函数内部嵌套调用另外一个函数

变量的作用域和global变量

变量作用域指的是变量生效的范围,主要分为两类:局部变量全局变量

  • 局部变量

所谓局部变量是定义在函数体内部的变量,即只在函数体内部生效。

def testA():
    a = 100
    print(a)

testA()  # 100
print(a)  # 报错:name 'a' is not defined

变量a是定义在testA函数内部的变量,在函数外部访问则立即报错。

局部变量的作用:在函数体内部,临时保存数据,即当函数调用完成后,则销毁局部变量。

  • 全局变量

所谓全局变量,指的是在函数体内、外都能生效的变量。

# 定义全局变量a
a = 100
def testA():
    print(a)  # 访问全局变量a,并打印变量a存储的数据
def testB():
    print(a)  # 访问全局变量a,并打印变量a存储的数据
testA()  # 100
testB()  # 100

思考:testB函数需求修改变量a的值为200,如何修改程序?

a = 100
def testA():
    print(a)
def testB():
    a = 200
    print(a)
testA()  # 100
testB()  # 200
print(f'全局变量a = {a}')  # 全局变量a = 100

思考:在testB函数内部的a = 200中的变量a是在修改全局变量a吗?

答:不是。观察上述代码发现,15行得到a的数据是100,仍然是定义全局变量a时候的值,而没有返回

testB函数内部的200。综上:testB函数内部的a = 200是定义了一个局部变量。

a = 100
def testA():
    print(a)
def testB():
    # global 关键字声明a是全局变量
    global a
    a = 200
    print(a)
testA()  # 100
testB()  # 200
print(f'全局变量a = {a}')  # 全局变量a = 200

函数的返回值

思考:如果一个函数如些两个return (如下所示),程序如何执行?

def return_num():
    return 1
    return 2


result = return_num()
print(result)  # 1

答:只执行了第一个return,原因是因为return可以退出当前函数,导致return下方的代码不执行。

思考:如果一个函数要有多个返回值,该如何书写代码?

def return_num():
    return 1, 2


result = return_num()
print(result)  # (1, 2)

注意:

  1. return a, b写法,返回多个数据的时候,默认是元组类型。
  2. return后面可以连接列表、元组或字典,以返回多个值。

拆包

  • 拆包:元组
def return_num():
    return 100, 200


num1, num2 = return_num()
print(num1)  # 100
print(num2)  # 200
  • 拆包:字典
dict1 = {'name': 'TOM', 'age': 18}
a, b = dict1

# 对字典进行拆包,取出来的是字典的key
print(a)  # name
print(b)  # age

print(dict1[a])  # TOM
print(dict1[b])  # 18
posted @ 2021-12-09 13:50  莳苡  阅读(30)  评论(0)    收藏  举报