# 一.基础介绍
# 1.什么是 python 函数?
在 Python 中,函数是一组用于执行特定任务或操作的可重复、可调用的代码块。函数允许你将代码模块化,提高代码的可读性和可维护性。
# 2.函数的定义
在 Python 中,函数通常由以下几个组成部分:
函数定义: 定义函数的关键字是 def
,后面跟着函数的名称和一对圆括号,括号里是函数的参数列表。
def my_function(parameter1, parameter2):
# 函数体
# 可以包含一系列语句来执行特定的任务
2
3
# 3.参数
参数: 函数可以接受零个或多个参数,这些参数是在调用函数时传递给函数的值。参数是可选的,函数可以没有参数。
def greet(name):
print("Hello, " + name + "!")
2
# 4.返回值
返回值: 函数可以返回一个值给调用者。使用 return
语句来指定函数的返回值。
def add(a, b):
result = a + b
return result
a=input('请输入a')
b=input('请输入b')
sum=add(a,b)
2
3
4
5
6
7
8
调用 add(2, 3)
将返回 5
。
# 5.函数调用
函数调用: 要执行函数中的代码,需要调用函数。调用函数时,提供函数所需的参数。
greet("Alice")
这将输出 "Hello, Alice!"。
# 5.函数的注释
def add(x, y):
"""
add函数可以接收2个参数,进行2数相加的功能
:param x: 形参x表示相加的其中一个数字
:param y: 形参y表示相加的另一个数字
:return: 返回值是2数相加的结果
"""
result = x + y
print(f"2数相加的结果是:{result}")
return result
2
3
4
5
6
7
8
9
10
# 二.函数作用域
# 1.局部变量
# 演示局部变量
def test_a():
num = 100
print(num)
test_a()
# 出了函数体,局部变量就无法使用了
print(num)
2
3
4
5
6
7
8
9
# 2.全局变量
# 演示全局变量
num = 200
def test_a():
print(f"test_a: {num}")
def test_b():
print(f"test_b: {num}")
test_a()
test_b()
print(num)
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 3.局部修改
num 的最终值还是 200,不会变为 500
# 在函数内修改全局变量
num = 200
def test_a():
print(f"test_a: {num}")
def test_b():
num = 500 # 局部变量
print(f"test_b: {num}")
test_a()
test_b()
print(num) # 打印200
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 4.全局修改
# 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)
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 三.系统函数
# 1.main 函数
#定义方法
def sayHello():
str = "hello"
print(str)
#主函数
if __name__ == "__main__":
print('This is main of module "hello.py"')
sayHello()
2
3
4
5
6
7
8
9
# 2.print()
print(): 用于输出信息到控制台。
print("Hello, World!")
# 3.input()
input(): 用于从用户获取输入。
user_input = input("Enter something: ")
# 4.type()
type(): 用于获取对象的类型。
x = 10
data_type = type(x)
2
# 5.str()
str(): 将其他类型转换为字符串类型。
num = 42
str_num = str(num)
2
# 6.int()
int(): 将其他类型转换为整数类型。
num_str = "42"
num = int(num_str)
2
# 7.float()
float(): 将其他类型转换为浮点数类型。
num_str = "3.14"
num = float(num_str)
2
# 四.容器函数
# 1.len()
len(): 用于获取序列(字符串、列表、元组等)的长度。
my_list = [1, 2, 3, 4, 5]
length = len(my_list)
2
# 2.range()
range(): 用于生成一个指定范围的数字序列。
numbers = list(range(5))
for i in range(n):
range(start, stop, step) #分别是起始、终止和步长
range(3) #即:从0到3,不包含3,即0,1,2
range(1,3) #即:从1到3,不包含3,即1,2
range(1,3,2) #即:从1到3,每次增加2,因为1+2=3,所以输出只有1
#如果改成range(1,5,2),就会输出1和3
matrix = [0 for i in range(4)] #[0, 0, 0, 0]
for j in range(i + 1, n + 1): #从i+1到n+1,不包含n+1
2
3
4
5
6
7
8
# 3.max()
max(): 返回可迭代对象中的最大值。
max_value = max([1, 2, 3, 4, 5])
# 4.min()
min(): 返回可迭代对象中的最小值。
min_value = min([1, 2, 3, 4, 5])
# 五.函数参数
# 1.函数参数
def user_info(age, name, gender):
print(f"姓名是:{name}, 年龄是:{age}, 性别是:{gender}")
# 位置参数 - 默认使用形式
user_info('小明', 20, '男')
2
3
4
5
# 2.关键字参数
def user_info(age,name, gender):
print(f"姓名是:{name}, 年龄是:{age}, 性别是:{gender}")
# 关键字参数
user_info(name='小王', age=11, gender='女')
user_info(age=10, gender='女', name='潇潇') # 可以不按照参数的定义顺序传参
def add(x, y):
return x + y
result = add(y=2, x=1)
print(result) # 输出3
2
3
4
5
6
7
8
9
10
11
12
13
# 3.默认参数
请求参数默认:
def user_info(name, age, gender):
print(f"姓名是:{name}, 年龄是:{age}, 性别是:{gender}")
# 缺省参数(默认值)
def user_info(name, age, gender):
print(f"姓名是:{name}, 年龄是:{age}, 性别是:{gender}")
user_info('甜甜', gender='女', age=9)
2
3
4
5
6
7
8
方法上默认:
def add(x=0, y=0):
return x + y
result = add()
print(result) # 输出0
2
3
4
5
# 4.不定长参数
# 不定长 - 位置不定长, *号
# 不定长定义的形式参数会作为元组存在,接收不定长数量的参数传入
def user_info(*args):
print(f"args参数的类型是:{type(args)},内容是:{args}")
user_info(1, 2, 3, '小明', '男孩')
user_info(1, 2, 3)
user_info()
2
3
4
5
6
7
8
# 5.关键字不定长
不定长关键字参数指的是函数可以接受任意数量的关键字参数,这些参数将被收集到一个字典中,并作为一个参数传递给函数。不定长关键字参数用两个星号 **
来表示。
# 不定长 - 关键字不定长, **号
def user_info(**kwargs):
print(f"args参数的类型是:{type(kwargs)},内容是:{kwargs}")
user_info(name='小王', age=11, gender='男孩')
user_info(name='小王', age=11)
#args参数的类型是:<class 'dict'>,内容是:{'name': '小王', 'age': 11, 'gender': '男孩'}
2
3
4
5
6
7
8
# 6.函数作为参数
# 定义一个函数,接收另一个函数作为传入参数
def test_func(compute,compute_1):
result = compute(1, 2) # 确定compute是函数
compute_1(1,2)
print(f"compute参数的类型是:{type(compute)}")
print(f"计算结果:{result}")
# 定义一个函数,准备作为参数传入另一个函数
def compute(x, y):
return x + y
def compute_1(x, y):
return x * y+1
# 调用,并传入函数
test_func(compute,compute_1)
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 7.lambda 匿名函数
# 定义一个函数,接受其它函数输入
def test_func(compute):
result = compute(1, 2)
return print(f"结果是:{result}")
# 通过lambda匿名函数的形式,将匿名函数作为参数传入
def add(x, y):
return x + y
test_func(add)
test_func(lambda x, y: x - y)
2
3
4
5
6
7
8
9
10
11
12
Lambda函数:
# 使用Lambda函数
f = lambda x, y: x + y
print(f(2, 3)) # 输出 5
2
3
4
# 8.动态参数
def func(a, b=2, *args, **kwargs):
print(a)
print(b)
print(args)
print(kwargs)
func(1, 3, 4, 5, name="Eve", job="Doctor")
2
3
4
5
6
7
8
1 3 (4, 5) {'name': 'Eve', 'job': 'Doctor'}
# 9. 参数解包(Argument Unpacking)
参数解包允许在调用方法时,将序列中的元素解包为位置参数,将字典中的键值对解包为关键字参数。
args = [1, 2, 3]
kwargs = {'name': 'Frank', 'job': 'Artist'}
func(*args, **kwargs)
2
3
# 六.进阶函数
# 1.函数嵌套
# 定义函数func_b
def func_b():
print("---2---")
# 定义函数func_a,并在内部调用func_b
def func_a():
print("---1---")
# 嵌套调用func_b
func_b()
print("---3---")
# 调用函数func_a
func_a()
2
3
4
5
6
7
8
9
10
11
12
13
# 2.多返回值
# 演示使用多个变量,接收多个返回值
def test_return():
return 1, "hello", True
x, y, z = test_return()
print(x)
print(y)
print(z)
2
3
4
5
6
7
8
# 3.all()函数
any()实现了或(OR)运算
all()实现了与(AND)运算
#对于any(iterables),如果可迭代对象iterables中任意存在每一个元素为True则返回True。
特例:若可迭代对象为空,比如空列表[],则返回False。
2
3
4
5
# 4.递归函数
def factorial(n):
if n == 0:
return 1
else:
return n * factorial(n - 1)
result = factorial(4)
print(result) # 输出24
2
3
4
5
6
7
8
# 5.pow()
在 Python 中,可以使用幂运算符 **
或内置函数 pow()
来计算一个数的幂。
使用幂运算符的示例:
x = 2
cube = x ** 3
print(cube) # 输出: 8
2
3
使用内置函数 pow()
的示例:
x = 2
cube = pow(x, 3)
print(cube) # 输出: 8
2
3
这两种方法都可以用来计算一个数的立方。你可以将 x
替换为任何你想要计算立方的数字。
# 6.divmod()
divmod()是 Python 内置函数之一,用于进行除法运算并同时返回商和余数。
divmod(x, y)
其中 x 和 y 是两个数字参数,函数将 x 除以 y,返回一个元组,元组中第一个元素是 x 除以 y 的商,第二个元素是余数。例如:
>>> divmod(10, 3)
(3, 1)
2
这里 10 除以 3,商为 3,余数为 1,所以返回元组(3, 1)。
# 7.exit()
在 Python 中,exit()
是一个内置函数,用于终止程序的执行。当程序执行到 exit()
时,程序将立即停止执行并退出程序。exit()
函数可以接受一个整数参数作为退出程序时的返回值,默认为 0。
例如,以下代码演示了如何使用 exit()
函数终止程序的执行:
import sys
def main():
# some code here
sys.exit(0) # exit with status code 0
if __name__ == '__main__':
main()
2
3
4
5
6
7
8
在上面的代码中,sys.exit(0)
表示程序成功退出,并且返回值为 0。如果程序遇到错误,可以使用非零的返回值来表示错误的类型。例如,如果程序遇到无法处理的输入,可以使用 sys.exit(1)
来表示输入错误。
# 8.random
# 1. 构建一个随机的数字变量
import random
num = random.randint(1, 10)
2
3
# 9.返回值
# 定义一个函数,完成2数相加功能
def add(a, b):
result = a + b
# 通过返回值,将相加的结果返回给调用者
return result
# 返回结果后,还想输出一句话
print("我完事了")
# 函数的返回值,可以通过变量去接收
r = add(5, 6)
print(r)
2
3
4
5
6
7
8
9
10
11
12