09、函数

1、函数

'''

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

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

优点:

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

'''


'''

定义函数:

格式:

def 函数名(参数列表):

语句
return 表达式

def 函数代码块,以def关键字开始

函数名:遵循标识符规则

():是参数列表的开始和结束

参数列表(参数1,参数2,......,参数n): 任何传入函数的参数和变量必须放在圆括号之间,用逗号分隔,函数从函数的调用者哪里获取信息

冒号:函数内容(函数封装的功能)以冒号开始,并且缩进

语句:函数封装的功能

return:一般用于结束函数,并返回信息给函数的调用者

表达式:即为要返回给函数的调用者的信息

注意:最后的return表达式,可以不写,相当于return None

'''


'''
函数的调用:

格式:函数名(参数列表)

函数名:是要使用的功能的函数函数名字

参数列表:函数的调用者给函数传递的信息

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

'''

'''
def myPrint():
print("sunck is good man")
print("sunck is nice man'")
print("sunck is very man'")
print("sunck is yyy man'")

myPrint()
myPrint()
myPrint()


'''

#需求:编写一个函数,给函数一个字符串和一个年龄,在函数内部打印出来

#形参(形式参数):定义函数时小括号中的变量,本质是变量


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


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

myPrint("aa",16)

'''


'''

关键字函数:

概念:允许函数调用时参数的顺序与定义时不一致



'''

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

#使用关键字参数

myPrint(age = 19, str = "aa")



'''
默认参数:

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


'''

#以后要用默认参数,最好将默认参数放到最后

def myPrint1(str, age = 18):
print(str,age)

#使用关键字参数

myPrint1( "aa", 12) #如果有参数12用12,如果没有使用默认参数18



'''
不定长函数:

概念:能处理比定义时更多的参数


'''
#加了星号(*)的变量存放所有未命名的变量参数,如果在函数调用时没有指定参数,它就是一个空元组

def func(name, *arrs):
print(name)
for x in arrs:
print(x)

func("aa","bb","cc","dd")


def mySum(*l):
sum = 0
for i in l:
sum += i
return sum
print(mySum(1,2,3,4,5))

#代表键值对的参数字典,和*所代表的意义类似

def func2(**kwargs):
print(kwargs)
print(type(kwargs))

func2(x = 1,y = 2)


# def func3 (*args, **kwargs): #可以接受任意参数
# pass #代表一个空语句



'''
匿名函数

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

特点:

1、lamdba只是一个表达式,函数体比def简单

2、lamdba的主体是一个表达式,而不是代码块,仅仅只能在lamdba表达式中封装简单的逻辑

3、lamdba函数有自己的命名空间,且不能访问自由参数列表之外的或全局命名空间的参数

4、虽然lamdba是一个表达式且看起来只能写一行,与C和C++内联函数不同;

格式:labdba 参数1,参数2,......参数n:expression(表达式)

'''
sum = lambda num1, num2:num1 + num2
print(sum(1,2))



----------------------

2、函数的返回值
'''
编写函数:实现功能,给函数两个数,返回这两个数的和

'''

def mySum(num1, num2):
sum = num1 + num2

#将结果返回给函数的调用者
return sum #或者
#执行完return语句,该函数就结束了,return后面的代码不执行

print("******") #不执行,在return后面

res = mySum(1, 2)

print(res)
posted @ 2020-02-18 15:26  步行-天下  阅读(87)  评论(0)    收藏  举报