大学生python课程自救 —— 04 函数

本文介绍了Python中的函数概念,包括函数的定义、参数类型(位置参数、关键字参数、可变参数)、返回值、Pass语句的用法以及文档字符串的重要性。通过实例演示了如何正确书写和调用函数,强调了代码复用和文档说明在编程中的价值。
摘要由CSDN通过智能技术生成

目录

介绍

定义函数

返回值

Pass语句 

参数传递

关键字参数

可变参数

文档说明 


介绍:

函数 是指可重复使用的程序片段。它们允许你为某个代码块赋予名字,允许你
通过这一特殊的名字在你的程序任何地方来运行代码块,并可重复任何次数。这就是所谓的
调用 函数。我们已经使用过了许多内置的函数,例如 len range

好比:


name = "abcdefg"
length = len(name)
print(length)

print(len(name))

那么,在这里面,你使用一个变量名为length,用于接收len()函数的返回的值,len()函数将处理name这个变量

但是,如果我们想不断地重复的调用length这个变量怎么办,若是一个非常复杂的程序,我们需要反复使用检测名字长度的代码,那么反复的写这个代码会让你非常头疼,而且不利于程序的维护和简洁性,所以我们可以将检测名字长度的代码封装成一个函数,然后在需要的地方调用这个函数。这样做可以避免重复的代码,并提高代码的可读性和可维护性。那么下面是一个例子:

# 法一
def check_name_length(name):
    length = len(name)
    return length

name = "abcdefg"

# 第一次调用
name_length = check_name_length(name)
print("Name length:", name_length)

# 在程序的其他地方调用
another_name = "hijklmn"
another_name_length = check_name_length(another_name)
print("Another name length:", another_name_length)

# 法二  小练习
str1 = "wihdqwio"
str2 = "uihashda"
str3 = "asjkcxihx"
def my_len(data):
    count = 0
    for i in data:
        count +=1
    print(f"字符串{data}的长度是{count}")

my_len(str1)
my_len(str2)
my_len(str3)

那么这样写是不是每次需要检测名字长度的时候直接调用一个叫做check_name_length()的函数就可以检测了,不需要反复写。  

了解函数的作用,那我们现在开始学习如何正确的书写函数(上面没看懂没关系的,我们在后面会再次提到)

定义函数

在Python中,可以使用def关键字定义一个函数。语法如下:

def function_name(parameters):
    """文档字符串(可选)"""
    # 函数体
    # 执行任务
    return result  # 返回值(可选)
  • def:定义函数的关键字。
  • function_name:函数的名称,应该遵循标识符的命名规则。
  • parameters:函数的参数列表,可以为空。
  • """文档字符串""":函数的文档字符串,用于描述函数的作用、参数和返回值等信息,可选。
  • return:返回语句,用于返回函数的结果,如果没有返回语句,函数将默认返回None

那么我来写一个最简单的a + b的函数封装的例子来更好的说明上述内容

def add(x, y):
    """返回两个数的和"""
    return x + y

result = add(3, 5)
print(result)  # 输出:8

 我来简单讲一下,这个函数有助于你更好的理解函数是干什么的(虽然我感觉你应该已经会了)

1.  首先我们定义了一个函数名为add的函数,并接收两个变量,分别为x 和 y 然后我们返回一个值,这个值为 x + y的值

2.我们定义了一个变量为result 用于传入参数和接收函数执行完返回的结果

3.打印结果

返回值

函数可以使用return语句返回结果。如果没有return语句,函数将默认返回None。例如:

#这段程序是没有返回值的程序,我们将对比来看
def add(x,y):
    result = x + y
    print(f"{x} + {y}的计算结果是:{result}")
    
add(5, 6)


# 这段程序是有返回值的


def add(a,b):
    result = a + b

#通过返回值,将相加的结果返回调用
    return result
    print("我完事了")  #不会执行

#接受变量
r = add(5,6)
print(r)

需要注意的是,return之后的语句是不会被执行的

如果你想要执行这句话,需要进行修改,你可以放函数里面(放return语句前面),也可以放外面(函数体外)。

需要注意到还有一点,如果 return 语句没有搭配任何一个值则代表着 返回 None None Python 中一个特殊的类型,代表着虚无。举个例子, 它用于指示一个变量没有值,如果有值则它的值便 是 None 。
每一个函数都在其末尾隐含了一句 return None ,除非你写了你自己的 return 语句。

Pass语句 

pass语句是Python中的一个空操作语句,用于在语法上需要语句的地方但程序不需要任何操作时使用。它通常用作占位符,用来保持代码的结构完整性。

在Python中,pass语句不执行任何操作,只是作为一个占位符存在。它可以在以下情况下使用:

  1. 在类定义或函数定义中,当你暂时不想实现其中的某些部分时,可以使用pass来保持语法的完整性,而不会引发错误。
class MyClass:
    def some_method(self):
        pass  # 暂时不实现这个方法,但保持结构完整

def my_function():
    pass  # 暂时不实现这个函数

       2. 在循环或条件语句中,当你需要占位但不需要执行任何操作时,可以使用pass语句。

for item in my_list:
    if condition:
        pass  # 暂时不执行任何操作
    else:
        # 实现一些其他逻辑
        do_something()

global语句

global语句是Python中的一个关键字,用于在函数内部声明一个变量是全局变量,而不是局部变量。当你在函数内部想要修改全局变量的值时,就需要使用global语句。

下面是一个简单的示例,演示了如何在函数内部使用global语句:

x = 10

def modify_global():
    global x  # 声明 x 是全局变量
    x = 20     # 修改全局变量 x 的值
    print("Inside the function:", x)

modify_global()
print("Outside the function:", x)

输出

'''在这个示例中,我们定义了一个全局变量 x,然后在函数 modify_global 内部使用 global 关键字声明 x 是一个全局变量。
这样,当我们在函数内部修改 x 的值时,就会改变全局变量 x 的值。输出结果为:
'''
Inside the function: 20
Outside the function: 20



#局部变量,global关键字

"""
变量作用域指的是变量的作用范围"""

# #演示局部变量
def test_a():
    num = 100
    print(num)

test_a()
print(num) 
# 出了函数体,局部变量就无法使用了

#演示全局变量
num = 200

def test_a():
    print(f"test_a: {num}")

def test_b():
    print(f"test_b: {num}")


test_a()
test_b()
print(num)

#global关键字,在函数内声明变量为全局变量
num = 200
def test_a():
    print(f"test_a: {num}")

def test_b():
    global num
    num = 500
    print(f"test_b: {num}")

test_a()
test_b()
print(num)

 

参数传递

Python中的函数参数可以是位置参数、关键字参数、默认参数和可变参数。例如:

def greet(name, message="Hello"):
    print(f"{message}, {name}!")

greet("Alice")  # 输出:Hello, Alice!
greet("Bob", "Goodbye")  # 输出:Goodbye, Bob!

简单来说,greet()函数负责接收两个参数,而第二个参数为message="Hello"  你可以理解为这是个默认值,如 greet("Alice")  若你不想传入message的参数,那么它则执行一个默认值。但是,如果你向最后一行那样,传入了两个值,那么message的默认参数将被修改,改为你输入的"Goodbye"。

关键字参数

关键字参数是指在函数调用时使用的一种参数传递方式,其中参数通过参数名进行传递,而不是根据它们在函数定义中的位置。python中,关键字参数是一种常见的使用方式。

那么假如我们比较夸张来说,某个程序里有1w个参数,其中绝大部分是默认参数。现在,你想只修改其中的某n个参数 ,你不知道具体的位置,按照传统方法修改起来实在太麻烦了,那么你就需要使用关键字参数,很轻松就搞定了,毕竟你不用找参数在函数中的位置了

在Python中,可以通过指定参数名来传递参数值,例如:

def greet(name, message):
    print(f"Hello, {name}! {message}")

# 使用位置参数传递
greet("Alice", "How are you?")

# 使用关键字参数传递
greet(message="Nice to meet you!", name="Bob")

可变参数

可变参数是指在函数定义时不确定参数个数的情况下,可以接受任意数量的参数。在Python中,可以使用星号(*)来定义可变参数。

def sum_all(*args):
    total = 0
    for num in args:
        total += num
    return total

# 调用函数并传递不同数量的参数
print(sum_all(1, 2, 3))  # 输出: 6
print(sum_all(1, 2, 3, 4, 5))  # 输出: 15
print(sum_all(1, 2, 3, 4, 5, 6, 7, 8, 9, 10))  # 输出: 55

在这个例子中,sum_all函数定义了一个可变参数*args,它可以接受任意数量的参数。在函数内部,我们使用一个循环遍历所有参数,并将它们相加,最后返回总和。通过这种方式,我们可以灵活地传递不同数量的参数给函数,并进行处理。

文档说明 

"""
对函数进行文档说明
"""

#定义函数,进行文档说明

def add(x,y):
    """
    add函数可以接收2个参数,进行两数相加的功能
    :param x : 形参x表示相加的其中一种数字
    :return; 返回值是2数相加的结果

    """
    result = x + y
    print(f"2数相加的结果是:{result}")
    return result

add(5,6)

这个你也可以理解为注释部分,但是它比注释要更加完美,如果你使用诸如vscode、vs2022等等编译器,你若将鼠标放到这些变量名上你会有新奇的发现。

当然你也可以使用一个   __doc__函数来实现这一功能

_doc__属性允许开发者在运行时访问对象的文档字符串,以便获取有关该对象的信息。例如,可

以使用__doc__属性来查看函数、类或模块的文档字符串。

下面简单举个例子不作多余赘述

示例用法:

def my_function():
    """
    这是个方法.
    """
    pass

print(my_function.__doc__)


#输出   这是个方法.

 那么大学生python课程自救 —— 04 函数 部分就结束了,后续我会继续更新,请大家耐心等待,如果有没些到或者不懂的,可以在评论区进行讨论!前面章节可看

大学生python课程自救 —— 03 控制流-CSDN博客

大学生python课程自救——02 运算符与表达式-CSDN博客

大学生python课程自救——01 基础-CSDN博客

  • 24
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值