【Python学习笔记】- 函数

这篇博客深入探讨了Python中的函数,包括函数的定义与调用、返回值、参数定义及调用方式。详细讲解了标准调用、关键字参数、默认参数、可变参数(列表可变参数和关键字可变参数)的用法,并强调了函数作为变量的特性。此外,还介绍了函数作用域、传值与传址的概念,以及匿名函数(lambda)的使用,同时对比了sorted()和list.sort()函数的异同。
摘要由CSDN通过智能技术生成

函数定义&调用

为代码块起一个名字,在需要执行代码块时,直接使用函数名调用

定义

def hello():
    print("hello,world!")

如上示例:
使用def关键字定义函数
hello为函数名,需要满足Python变量的命名规范
小括号()定义函数参数
冒号:表示函数定义结束
使用缩进代码块定义函数体

调用

hello()

使用函数名()进行函数调用(执行函数体内代码)

函数返回值

函数一般会在经过一系列语句处理后为调用者返回执行结果

def return_hello():
    return "hello,world!"

调用
>>> rt = return_hello()
>>> rt
'hello,world!'

在函数体内使用return关键字为调用者返回执行结果
使用变量赋值的方式用变量接收函数执行结果
函数可以有多个返回值(元组类型),并使用多个变量接收函数返回值

参数定义 & 调用(标准调用)

示例:

def add(a,b):
    print(a,'+',b,'=',a+b)

>>> add(1,2)
1 + 2 = 3

在函数定义语句括号内定义函数参数变量,可设置任意多个
在函数调用语句括号内将数据传递到函数定义内
在函数定义多个参数时,在函数调用时需要传递多个数据,数据之间使用逗号分隔,数据按照索引位置依次对应传递给函数定义的参数中

函数调用

关键字参数

def add(a,b,c):
    print(a,b,c)

>>> add(1,c=2,b=3)

在函数调用时使用参数名赋值方式,为参数指定对应的数据
标准调用和关键字参数调用可混用,标准参数在前,关键字参数在后

默认参数


def add(a,b,c=1):
    print(a+b)

>>> add(1,2)

在定义函数时可以为参数设置默认值,在调用时未设置对应数据时,则使用默认值
默认参数必须置于函数参数最后

标准参数–关键字参数–默认参数

可变参数

可变参数就是传入的参数个数是可变的,可以是1个、2个到任意个,还可以是0个。
列表可变参数

def test(a,b,*args):
    print('a=',a,'b=',b,'args=',args)

>>> test(1,2)
a= 1 b= 2 args= ()
>>> test(2,3,4,5,6)
a= 2 b= 3 args= (4, 5, 6)

有上面的实例可以得知,列表可变参数中,列表可变参数返回的是包含多个参数的元组

关键字可变参数

def test(a,b,**kargs):
    print('a=',a,'b=',b,'kargs=',kargs)

>>> test(2,3,c=4,d=5)
a= 2 b= 3 kargs= {'c': 4, 'd': 5}

有上面的实例可以得知,关键字可变参数中,关键字参数返回的是包含多个key,value的字典

混用

def test(a,b,*args,**kargs):
    print('a=',a,'b=',b,'args=',args,'kargs=',kargs)

>>> test(2,3,111,666,888,c=4,d=5)
a= 2 b= 3 args= (111, 666, 888) kargs= {'c': 4, 'd': 5}

混用时,列表可变参数在前,关键字参数在后
列表参数和关键字可变参数之间可定义多个变量(Python2.7不支持)

忽略返回值

>>> nums = [1,2,3,4,5,6]
>>> a,*b,c= nums
>>> print(a,c)
1 6
>>> print(b)
[2, 3, 4, 5]

函数也是变量

可以将函数赋值给某个变量,此变量和函数名称一样
函数名称可以传递给其它函数
实例:

def add(a,b):
    return a + b
>>> add(1,2)
3
>>> add2 = add
>>> add2(2,3)
5

还可以将函数直接当成参数传递给另一个函数
实例:

def result(a,b,func):
    print('a=',a,'b=',b,'result=',func(a,b))

def add(a,b):
    return a+b

>>> result(1,2,add)
a= 1 b= 2 result= 3

函数作用域

在函数中变量的查找顺序为LGB原则
L local 函数体和参数内 (p_a, p_b, l_a)
G global 模块内 (g_a, g_b)
B buildints python内置

传值与传址

对于基本类型在函数传递时,直接传递值,在函数内修改值不影响函数体外的值

对引用类型在函数传递时,传递数据的地址,在函数内修改地址内的数据会影响函数体外(重新赋值后,则为在函数体内重新定义,与函数外变量指向已不同,不会影响函数体外)

匿名函数&sorted&list.sort

lambda匿名函数
不需要定义函数名称(临时函数)
只做简单运算,并返回值,没有复杂的函数体

Python里的Lambda就是个匿名函数。典型的应用场景是结合sorted,filter,map,reduce等函数,通过闭包的特性,读取函数内部的某个变量,然后做相应简单的处理。
例:

lambda x: x * x

等价于:

def f(x):
  return x * x

实例:

def result(a,b,func):
    print('a=',a,'b=',b,'result=',func(a,b))


>>> result(1,2,lambda a,b:a+b)
a= 1 b= 2 result= 3

sorted()函数和list.sort()函数:
相同点:
都可以为list进行排序
参数相同,通过key指定排序的元素,使用reverse指定升序或者降序

区别:
sorted返回一个新的list不影响原list,list.sort在原list上进行排序
实例:

nums = [2,1,4,3,6,7,5]
print(sorted(nums))
print(nums)

根据第二项排序
实例:

nums = [(4,1),(2,2),(5,4),(1,3),(3,5)]
print(sorted(nums,key=lambda nums:nums[1]))

结果:
[(4, 1), (2, 2), (1, 3), (5, 4), (3, 5)]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值