一:认识函数: 在一个完整的项目中,某些功能会反复使用。那么会将整个功能封装成函数 当我们要使用功能的时候,直接调用函数即可。 函数本质:函数就是对功能的封装 优点: 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))