目录
介绍:
好比:
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语句前面),也可以放外面(函数体外)。
Pass语句
pass
语句是Python中的一个空操作语句,用于在语法上需要语句的地方但程序不需要任何操作时使用。它通常用作占位符,用来保持代码的结构完整性。
在Python中,pass
语句不执行任何操作,只是作为一个占位符存在。它可以在以下情况下使用:
- 在类定义或函数定义中,当你暂时不想实现其中的某些部分时,可以使用
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博客