目录
一、函数的基本介绍
函数与方法的区别
直接调用的是函数
通过对象点出来的是方法
print("hello")
a = [2, 1, 3]
a.sort()
print(a)
函数的定义
常规函数定义,有返回值的,跟无返回值的
Python对于参数的传入是没有类型限制的
不过可以通过给参数添加类型,提示调用时应传入的类型
二、函数返回值及传参的情况
test01
# 定义函数
def say(name):
print(f'{name}:say hell')
say('张三')
print("====================定义函数=====================")
# 有参有返回
def say1(name1):
return name1
print(say1("李四"))
print("====================有参有返回=====================")
# 无参有返回
def say2():
return "被调用"
print(say2())
print("====================无参有返回=====================")
# 无参无返回
def say3():
print("无参无返回")
# Java:反射调用方法,方法被void修饰,是有返回值 ,是null
# Python:无参无返回,方法被调用,返回值是none
print(say3())
print("====================无参无返回=====================")
# 在Java中函数和方法是同一个东西
# Python中
# 函数指的是可以单独调用的,比如print/type
#方法指的是不能单独调用,l1 = [1,2,3,4] l1.extend({1})
运行:
test02
# def add(a, b):
# return a + b
#
#
# print(add(1,2))
# 直接锁定参数类型 若在调用时传入类型不匹配的则会给出提示
# def add1(a:int, b:int):
# return a + b
#
#
# print(add1(1,2))
# 设置默认值
# def add2(a, b=2):
# return a + b
#
#
# print(add2(1,4))
# 常见传参
# 1.位置传参
# res(1, 2)
# 2.关键字传参
# add(a=3,b=6)
# 3.缺省传参
# def res(a, b=3):
# print(a)
# print(b)
# res(1)
# res(1,2)
# 其他传参
"""
可变传参-元组 tuple
"""
def add(*a):
print(a)
print(type(a))
add(1,2,3,4,5,6,7)
# 利用可变参数的方式计算1-10的和
def he(*h):
total = 0
for i in h:
total += i
return total
print(he(1, 2, 3, 4, 5, 6, 7, 8, 9, 10))
"""
可变传参-字典dict
"""
def chen(**a):
print(a)
print(type(a))
# print(a.values())
for i in a.values():
print(i)
chen(a=2,b=3,c=4)
运行:
test03
利用python可以返回多个值的特点,完成一个案例
# python中的返回值
# 计算最大值、最小值、所有元素求和
def jisuan(*arr):
min = arr[0]
max = arr[0]
total = 0
for i in arr:
# java:min = min < i ? min :i
min = min if min < i else i
max = max if max > i else i
total += i
return min,max,total
print(jisuan(1, 2, 3, 4, 5))
运行
三、函数嵌套
使用递归完成求和(1-100)、
test04
# 递归求和1-100的和
def sum(n):
if n < 2:
return n
else:
return n + sum(n - 1)
print(sum(100))
运行
四、lambda表达式
test05
# lambda表达式
def add(a,b):
return a+b
print(add(1, 3))
print("=====================================")
# python 中的表达式只能存在一行代码,使用 python 中的 lambda 来简化函数
# 形式
jia = lambda a,b:a+b
print(jia(1, 3))
print("=====================================")
"""
案列
"""
arr = [1,2,3,4,5,6,7]
# 将列表arr中的所有元素都*2
arr2 = map(lambda a:a*2,arr)
for i in arr2:
print(i)
print("=====================================")
#将两个数组对应位置的元素值相加
a= [1,2,3,4,5,6,7]
b= [8,9,10,11,12,13,14]
xj = lambda a,b:a+b
# e1代表a列表中的其中一个元素 e2代表b列表对应位置下的那个元素
c = map(lambda e1,e2:e1+e2,a,b)
for i in c:
print(i)
print("=====================================")
# filter函数
d = filter(lambda e:e>5,b)
for i in d:
print(i)
print("=====================================")
# 字典排序 使用 lambda 对字典数据进行排序
persons = [
{"name": "张三", "age": 20},
{"name": "李四", "age": 17},
{"name": "王麻子", "age": 21}
]
persons.sort(key=lambda p: p['age'], reverse=True)
print(persons)
运行