一、基本概念
函数是什么? 通俗的来讲就是包括函数名 + 函数体并实现一个功能的代码块,重点是一个代码块 基本格式
def xxx(): # 函数名
print('xxxx') # 函数体
tmpdir__17_9_7_15_04_07.jpg
二、函数的参数
2.1.函数的多个参数
def sumMoreParam(num1, num2):
print(num1 + num2)
sumMoreParam(2, 3)
2.2.函数的参数不定长参数
方式一:参数前面增加一个* 表示参数就是元祖类型, 因为元祖有序不可变
def mySum(*args):
print(args, type(args))
mySum(1, 2, 3, 4)
方式二:参数前面增加两个** 表示参数就是字典类型
def mySum(**kwargs):
print(kwargs, type(kwargs))
mySum(key1=1, key2=2, key3=3, key4=4)
不定长参数有2个概念
装包:把传递来的参数,包装成一个集合的形式,比如元祖、字典
拆包:把集合的参数分解成个体
def mySum(*args):
print(len(args), *args) # 拆包
mySum(1, 2, 3, 4) # 装包
2.3.函数的缺省参数,参数默认值
def hate(somebody='凯尔'):
print('我想打', somebody)
hate()
2.4函数的注意事项 python里面只有地址传递(引用传递) 参数是可变的可以修改, 不可变的不能更改
b = 10
print('b之前地址---', id(b), b)
def change(num):
num = num + 2
print('num的地址-----', id(num), num)
change(b)
print('b之后地址---', id(b), b)
结果:
b之前地址--- 4401873264 10
num的地址----- 4401873328 12
b之后地址--- 4401873264 10
参数是可变的可以修改
b = [1, 3, 4]
print('b之前地址---', id(b), b)
def change(num):
num.append(4)
print('num的地址---', id(num), num)
change(b)
print('b之后地址---', id(b), b)
结果:
b之前地址--- 4333161736 [1, 3, 4]
num的地址--- 4333161736 [1, 3, 4, 4]
b之后地址--- 4333161736 [1, 3, 4, 4]
2. 5函数的使用说明
def mySum(*args):
"""
这里函数说明
"""
pass
2. 6偏函数
方式一 :自己创建这个函数就是一个偏函数
def test1(a, b, c, d=1):
print(a + b + c + d)
def test2(a, b, c=2, d=2):
test1(a, b, c, d)
test2(1, 2)
方式二: 系统快速创建偏函数
def test1(a, b, c, d=1):
print(a + b + c + d)
import functools
test3 = functools.partial(test1, c=2, d=2)
test3(1, 2)
偏函数的使用场景
import functools
a = "10010"
int2 = functools.partial(int, base=2)
int10 = functools.partial(int, base=10)
print(int2(a), int10(a))
2.7高阶函数 - 函数作为另一个函数的参数
list = [{"name": 'lz', 'age': 18}, {"name": 'zlz', 'age': 34}, {"name": 'xlz', 'age': 27}]
def getKey(item):
return item['age']
result = sorted(list, key=getKey)
print(result)
2.8高阶函数 - 返回函数
def computeFunc(flag):
def __sum(a, b):
return a + b
def __jian(a, b):
return a - b
if flag == '+':
return __sum
else:
return __jian
getFunc = computeFunc('+')
print(getFunc(1, 2))
2.9 高阶函数-匿名函数 - lambda函数 没有return :之后的表达式就是返回值
print((lambda x, y: x + y)(1, 2))
noname = lambda x, y: x * y
print(noname(2, 4))
list = [{"name": 'lz', 'age': 18}, {"name": 'zlz', 'age': 34}, {"name": 'xlz', 'age': 27}]
result = sorted(list, key=lambda item: item['age'])
print(result)
如果需要了解更多Python知识,请查看
Python的基础知识之生成器
Python的基础知识之装饰器
Python的基础知识之迭代器
最后赠言
学无止境,学习Python的伙伴可以多多交流
网友评论