提示:以下是本篇文章正文内容,下面案例可供参考
# def和return是固定写法
# function_name和parameters可以自己定义
def function_name(parameters):
# 函数体
# 执行特定任务的代码
return result # 可选的返回值
def function_name(parameters):
"""
:param parameters:
:return:
"""
return
# 简单说明一下里面应该如何填写
def function_name(parameters):
"""
这里说明函数的功能
:param parameters: 接受参数的类型
:return: 返回参数的类型
"""
return
# gcd - greatest common divisor 最大公约数
# lcm - least common multiplier 最小公倍数
# 自定义gcd函数
def gcd(x, y):
"""
计算最大公约数
:param x: 第一个整数
:param y: 第二个整数
:return: 返回最大公约数
"""
while x % y != 0:
x, y = y, x % y
return y
# 自定义lcm函数
def lcm(x, y):
"""
计算最小公倍数
:param x: 第一个整数
:param y: 第二个整数
:return: 返回最小公倍数
"""
return x * y // gcd(x, y)
n1, n2 = map(int, input('输入两个正整数: ').split(' '))
print(f'最大公约数: {gcd(n1, n2)}')
print(f'最小公倍数: {lcm(n1, n2)}')
# 输入两个正整数: 15 18
# 最大公约数: 3
# 最小公倍数: 90
from math import gcd, lcm
n1, n2 = map(int, input('输入两个正整数: ').split(' '))
print(f'最大公约数: {gcd(n1, n2)}')
print(f'最小公倍数: {lcm(n1, n2)}')
# 输入两个正整数: 15 18
# 最大公约数: 3
# 最小公倍数: 90
import random
list1 = [32, 43, 36, 33, 74, 88, 2, 42, 93, 20]
# random.shuffle是Python标准库中random模块提供的一个函数,用于将一个可变序列(比如列表)中的元素随机排列,从而实现打乱序列的效果。
random.shuffle(list1)
print(list1)
# [42, 74, 36, 43, 20, 32, 88, 33, 2, 93]
from random import shuffle
list1 = [32, 43, 36, 33, 74, 88, 2, 42, 93, 20]
shuffle(list1)
print(list1)
# [93, 36, 42, 32, 88, 74, 20, 43, 33, 2]
def add(a, b):
return a + b
result = add(3, 5)
def func1(x, y, z):
print('x:{}, y:{}, z:{}'.format(x, y, z))
func1(10, 20, 30)
# x:10, y:20, z:30
func1(20, 10, 30)
# x:20, y:10, z:30
def func1(x, y, z):
print('x:{}, y:{}, z:{}'.format(x, y, z))
func1(x=10, y=20, z=30)
# x:10, y:20, z:30
func1(z=10, x=20, y=30)
# x:20, y:30, z:10
def func1(x, y, z):
print('x:{}, y:{}, z:{}'.format(x, y, z))
func1(10, 20, z=30)
# x:10, y:20, z:30
# func1(10, 30, y=20) # 不能这样写,y会被二次赋值而z得不到传参
# TypeError: func1() got multiple values for argument 'y'
# 使用关键字参数时不受位置顺序影响影响
func1(10, z=30, y=20)
# x:10, y:20, z:30
def func2(x, y=20, z=10):
print(f'x:{x},y:{y}')
print(x + y + z)
# 调用函数时有默认值的参数可以不赋值
func2(20)
# x:20,y:20
# 50
# 如果调用函数时给有默认值的形参传值,新的实参会覆盖掉原来形参的默认值
func2(20, 10, 30)
# x:20,y:10
# 60
def func1(*args):
print(args)
func1(10)
# (10,)
def func2(*args):
sum1 = 0
for num in args:
sum1 += num
print(sum1)
func2(10, 20, 64, 50)
# 144
def func1(**kwargs):
print(kwargs)
func1(a=20,b=30,c=40)
# {'a': 20, 'b': 30, 'c': 40}
def func2(**kwargs):
for key in kwargs:
print(kwargs[key])
func2(name='是靖不是静',age=22)
# 是靖不是静
# 22
def func1(*args, **kwargs):
for i in args:
print(i, end=" ")
for key in kwargs:
print(kwargs[key],end=" ")
func1(10, 20, 30, name='是靖不是静', age=22, sex='男')
# 10 20 30 是靖不是静 22 男
# 练习:使用匿名函数生成一个保存了50以内3的倍数的列表。
# 这个是用for循环实现
list1 = []
for i in range(0, 51):
if i % 3 == 0:
list1.append(i)
print(list1)
# [0, 3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45, 48]
# 列表推导式
list2 = [i for i in range(0, 51) if i % 3 == 0]
print(list2)
# [0, 3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45, 48]
# 匿名函数实现
new_list = lambda x, y: [i for i in range(0, x + 1) if i % y == 0]
print(new_list(50, 3))
# [0, 3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45, 48]
# 计算N的阶乘
# 使用递归解决
def fac(n):
if n == 1:
return 1
else:
# 在这个例子中,facn1函数计算阶乘。如果输入值n是0或1,则返回1。否则,它调用自己并将结果乘以n
return n * fac(n - 1)
# 依次类推
# 3 * fac(2) -> 3 * 2 * fac(1) -> 3 * 2 * 1
# fac(2) = 2 * fac(1)
# fac(1) = 1
# 这样函数自己调用自己的称为递归函数
print(fac(3))
# 6
# 在函数内部在定义一个函数,用来检查一个任意数字是否是偶数
list1 = [25, 30, 10, 26, 29, 64, 23, 20, 5]
def fn(i):
if i % 2:
return False
return True
def fn1(func, lst):
# 对列表进行筛选
# 返回新列表
return [i for i in lst if fn(i)]
print(list1)
# [12, 35, 10, 21, 28, 64, 23, 20, 12]
print(fn1(fn, list1))
# 当fn函数为参数时,就是把fn的代码传入进去
# [12, 10, 28, 64, 20, 12]
# 筛选奇数
list1 = [25, 30, 10, 26, 29, 64, 23, 20, 5]
temp1 = list(filter(lambda num: num % 2, list1))
print(temp1)
# [25, 29, 23, 5]
# 用法一:将列表中每个元素的个位数组成一个新的列表
nums = [10, 23, 5, 89, 75, 102]
# 定义一个返回个位数的函数
def gewei(x):
return x % 10
# 按照要求返回nums序列里面每一个元素的个位数
# 注意返回的是一个迭代器要转换列表
print(list(map(gewei, nums)))
# [0, 3, 5, 9, 5, 2]
# 用法二:将下面两个可迭代对象合并成一个字典
names = ['张三', '李四', '王五']
math = [66, 70, 90]
# 定义一个把可迭代对象1和可迭代对象2一一对应起来返回字典的函数
print(list(map(lambda x, y: {x: y}, names, math)))
# [{'张三': 66}, {'李四': 70}, {'王五': 90}]
from functools import reduce
# 字符串连接
my_strings = ['Hello', ' ', 'World']
print(reduce(lambda x, y: x + y, my_strings))
# 输出:Hello World
my_numbers = [10, 4, 7, 15, 3]
# 求最大值
print(reduce(lambda x, y: x if x > y else y, my_numbers))
# 输出:15
# 累计求和
print(reduce(lambda x, y: x + y, my_numbers))
# 39
高阶函数是一种强大的编程工具,可以灵活地处理函数,使代码更具表达力和通用性,Python中的函数是一段可重用的代码,用于执行特定任务,随着项目复杂性的增加,函数的使用变得更为重要。