函数概述

一:认识函数:
在一个完整的项目中,某些功能会反复使用。那么会将整个功能封装成函数
当我们要使用功能的时候,直接调用函数即可。

函数本质:函数就是对功能的封装

优点:
1、简化代码结构,而且增加了代码的复用度(重复使用的程度)
2、如果想修改某些功能或者调试某个BUG,只需要修改对应的函数即可

定义函数:
格式:
def 函数名(参数列表):
语句
return 表达式
def:函数代码块以def关键字开始
函数名:循环标识符规则
参数列表(参数1,参数2,...,参数n):任何传入函数的参数和变量
必须放在圆括号之间,用逗号分隔。函数从函数的调用者那里获取的信息
:函数内容(封装的功能)以冒号开始,而且缩进
语句:函数封装的功能
return:一般用于结束函数的,并返回信息给函数调用者
表达式:即为要返回给函数的调用者的信息
注意:最后的return表达式,可以不写,相当于return None


函数的调用
格式:函数名(参数列表)

函数名:要使用的功能的函数名字
参数列表:函数的调用者给函数传递的信息


函数调用的本质:实参给形参赋值的过程

--------------------------------------
二、函数的参数

举例:
#形参(形式参数):定义函数时,小括号中的变量,本质是变量
#参数必须按顺序传递
def myprint(string,age):
print("%s,%d" %(string,age))

#实参(实际参数):调用函数时给函数传递的数据,本质是值
myprint("郭杰",19)

--------------------------------------
三、函数的返回值
举例:
def mySum(num1,num2):
num3 = num1 + num2
#将结构返回给函数的调用者
return num3
#执行完return语句,函数就结束了,return后面的语句不执行

res = mySum(1,2)
print(res)

------------------------------------------
四:传递参数

值传递:传递的是不可变类型
不可变类型:string、tuple、number
举例:
def func1(num):
num = 10
temp = 20
func1(temp)
print(temp)


引用传递:传递的可变类型
可变的:list、dict、set
举例:
def func2(lis):
lis[0] = 100

li = [1,2,3,4]
func2(li)
print(li)

---------------------------------
5、关键字参数
概念:它允许函数调用时参数的顺序与定义时不一致

def myPrint(str,age):
print(str,age)

#使用关键字参数
myPrint(age = 18,str = "sunck is a good man")

#关键字参数,一般不这样写

----------------------------------------------
6、默认参数
概念:调用函数时,如果没有传递参数,那么则使用默认参数

以后要用默认参数,最好将默认参数放到最后
def myPrint(str = "sunck is a good man",age=18):
print(str,age)

myPrint()
-----------------------------------------
7、不定长参数
概念:能处理比定义时更多的参数

#加了星号(*)的变量存放所有未命名的变量参数,如果
在函数调用时指定了参数,它就是一个空元组
第一种写法:
def func(name,*args):
print(name)
for x in arr:
print(x)
第二种写法:
#**代表键值对的参数字典,和*所代表的意义类似
def func(**kwargs)
print(kwargs)

func(x=1,y=2)

#可以接收任意参数
def func3(*args,**kwargs):
pass


-------------------------------------------
匿名函数:
概念:不适用def这样的语句定义函数,使用lambda来创建匿名函数

特点
1、lambda只是一个表达式,函数体比def简单
2、lambda的主题是一个表达式,而不是代码块,仅仅只能在lambda表达式中
封装简单的逻辑
3、lambda函数有自己的命名空间,且不能访问自由参数列表之外的或
全局命名空间参数
4、虽然lambda是一个表达式,且只看起来是能写一行,与c、c++的内联函数
不同。

格式:
lambda 参数1,参数2,...,参数n:expression
举例:
sum = lambda num1,num2:num1+num2
print(sum(1,2))
原文地址:https://www.cnblogs.com/guojie-guojie/p/9230464.html