【Python_08】Python基础语法(函数这么回事儿)

文章目录

  • 思考
  • 概述
  • 一、Python中的函数
    • 1.1 函数定义
    • 1.2 无返回值函数
    • 1.3 有返回值函数
    • 1.4 可变参数函数
    • 1.5 默认参数函数
    • 1.6 匿名函数(Lambda 函数)
  • 二、函数作用域
    • 2.1 全局作用域
    • 2.2 局部作用域
    • 2.3 嵌套作用域
    • 2.4 内置作用域
  • 思考案例解答之一

思考

述求:现有10个长宽不一的矩形,求出每一个矩形面积并打印在终端控制台,在代码中使用什么方式实现?
【Python_08】Python基础语法(函数这么回事儿)_第1张图片

概述

  • 在编程中,函数是一种可重复使用的代码块,用于执行特定任务或功能。它接受输入参数,并返回一个输出结果。通过将一系列操作封装在函数中,我们可以使代码更简洁、可读性更好,并能够被多次调用。
  • 函数的定义由函数名、参数列表和函数体组成。当我们调用函数时,可以传递实际参数给形式参数,函数将执行相应的操作并返回结果。函数还可以具有副作用,如修改全局变量或输出到屏幕。
  • 函数的使用可以提高代码的可维护性和重用性,同时使程序结构更清晰。通过将相关功能封装在函数中,我们可以轻松地在不同的部分或项目中重用这些函数,从而减少代码重复和提高开发效率。

一、Python中的函数

1.1 函数定义

function_name:函数的名称,遵循命名规则,通常采用小写字母,可以使用下划线来分隔单词。
parameters :函数的参数列表,可以是0个或多个参数。也可以使用默认参数和可变参数。
函数体: 函数的具体实现,可以包含多条语句,用于执行特定的任务或功能。
return result:函数的返回值,可以是一个或多个返回结果。如果没有指定返回值,函数默认返回None

def function_name(parameters):
    # 函数体
    # 执行特定的任务或功能
    # 可以包含多条语句
    # 可以使用参数进行操作
    return result

1.2 无返回值函数

这类函数执行一些特定的任务或操作,但没有返回结果。通常通过对其他对象进行修改或者直接输出结果来实现功能。

def print_message(message):
    print(message)
    
print_message('Hello Python') # Hello Python
result = print_message('Hello World')
print(result) # None

1.3 有返回值函数

这类函数会执行一些操作,并返回一个或多个结果。可以使用return关键字来指定返回值。

"""
定义一个求两数和的函数返回计算结果
"""
def add_num(x,y):
    return x + y
result_1 = add_num(10,10)
result_2 = add_num(1,2)
result_3 = add_num(100,99)
print(result_1)  # 20
print(result_2)  # 3
print(result_3)  # 199

1.4 可变参数函数

这类函数可以接收不定数量的参数。在函数定义时使用*args来表示可变参数,它们会被作为一个元组传递给函数。可以使用可变参数函数来处理不确定数量的输入。

"""
定义一个求不确定参数的求和函数并返回计算结果
"""
def add_num(*args):
    result = 0
    for num in args:
        result += num
    return result
print(add_num()) # 0
print(add_num(1,2,3)) # 6
print(add_num(1,2,3,4,5)) # 15

1.5 默认参数函数

这类函数在定义时可以为参数指定默认值。调用函数时,如果没有提供相应参数的值,将使用默认值。可以使用默认参数函数来简化函数调用,避免重复输入常见参数值。

"""
定义一个求两数和且第一个参数默认值为0,第二个参数为10的求和函数并返回计算结果
"""
def add_num(num1=0,num2=10):
    return num1 + num2
print(add_num())  # 10
print(add_num(1,2)) # 3
print(add_num(100,100)) # 200

1.6 匿名函数(Lambda 函数)

这类函数是一种简洁的函数定义方式,通常用于定义简单的、单次使用的函数,或作为其他函数的参数。它们由lambda关键字引导,不需要使用def关键字定义。

"""
Lambda函数(匿名函数)是一种特殊的函数形式,可以在需要函数对象的地方使用,而无需显式地定义函数。Lambda函数使用关键字lambda来定义;
语法: lambda arguments: expression
arguments表示函数的参数,可以是多个参数,通过逗号分隔;
expression表示函数的返回值表达式
"""
# Lambda函数计算两个数的和
num = lambda x,y:x+y
print(num(10,10)) # 20
print(num(5,2)) # 7

二、函数作用域

划重点:Python遵循LEGB规则来解析变量的作用域,即先从局部作用域查找变量,然后是嵌套作用域、全局作用域和内置作用域。如果在当前作用域找不到变量,就会向上一级作用域继续查找,直到找到或者查找到最外层作用域。

2.1 全局作用域

全局作用域是在函数外部定义的变量的作用域范围,可以在程序的任何地方访问这些变量。全局变量在整个程序执行期间都是可用的。

global_var = 10
def func():
    print(global_var)  # 函数内部可以访问全局变量
func() # 10
print(global_var) # 10

def func2():
    global_var = 100 # 不可改变全局变量
    print(global_var) # 访问的是函数内部变量global_var
func2() # 100
print(global_var) # 10

2.2 局部作用域

局部作用域是在函数内部定义的变量的作用域范围,只能在函数内部访问这些变量。局部变量只在函数执行期间可用,函数执行完毕后,这些变量将被销毁。

def func():
    local_var = 20  # 局部变量
    print(local_var)  # 可以访问局部变量
func()
# print(local_var)  # 无法访问局部变量,会报错

2.3 嵌套作用域

嵌套作用域指的是函数中包含其他函数的情况,内部函数可以访问外部函数的变量。外部函数的变量对内部函数是可见的,但对外部函数以外的代码是不可见的。

def outer_func():
    outer_var = 30
    def inner_func():
        print(outer_var)  # 可以访问外部函数的变量
    inner_func()
outer_func()
#print(outer_var)  # 无法访问外部函数的变量,会报错

2.4 内置作用域

内置作用域是指Python解释器内部定义的一些特殊变量和函数,可以在任何地方访问这些内置函数和模块,如print()和len()等。

message = 'Hello Python'
def getLen():
    print(message) # Hello Python
    return len(message)
len = getLen()
print(len) # 12

思考案例解答之一

述求:现有10个长宽不一的矩形,求出每一个矩形面积并打印在终端控制台

# 述求:现有10个长宽不一的矩形,求出每一个矩形面积并打印在终端控制台

# 定义一个计算面积函数
def area(length, width):
    area_result = length * width
    return f'长为{length},宽为{width}的面积为{area_result}'


# 计算长:10, 宽:10的面积
area1 = area(10, 10)
print(area1)  # 长为10,宽为10的面积为100
# 计算长:10, 宽:15的面积
area2 = area(10, 15)
print(area2)  # 长为10,宽为15的面积为150
# 计算长:6, 宽:15的面积
area3 = area(6, 15)
print(area3)  # 长为10,宽为15的面积为90
# ... 传入长宽即可计算出面积,可无限次调用函数计算

你可能感兴趣的:(Python入门,python,开发语言)