1.函数的参数可以分为普通参数、默认参数、可变参数,关键字参数
可变参数可以根据需求分为*args和**kwargs
def book(bookname,author = ‘鲁迅‘):
print(‘{}借阅了:{}‘.format(author,bookname))
book(‘张三‘,‘朝花夕拾‘)结果为张三借阅:朝花夕拾
当调用函数时给出默认参数的实参会覆盖定义函数时默认参数的形参
2.关键字参数:在函数调用时传入参数名以及参数值,改变输出
def book(bookname,author = ‘鲁迅‘,school = ‘人民‘):
print(‘{}大学的{}借阅了:{}‘.format(school,author,bookname))
book(school = ‘北大‘,‘张三‘,‘朝花夕拾‘)结果为北大的张三借阅:朝花夕拾
3.可变参数*args,**kwargs:*args作用一次性在函数调用中传入多个不变类型的参数,**kwargs中作用是传入多个可变类型的参数
def book(*args,**kwargs):
print(args)#打印一个返回值为(‘小红‘,‘小王‘)的元组
print(kwargs)#打印出返回值为{‘书名‘,‘红楼梦‘,‘作者‘,‘曹雪芹‘,‘数量‘:1}的dict
book = {‘书名‘,‘红楼梦‘,‘作者‘,‘曹雪芹‘,‘数量‘:1}
book(‘小王‘,‘小红‘,**book)
4.装包和拆包
1)函数定义时给形参前面加*是装包
def sum_1(*args): numbers = 0 for i in args: numbers += 1 print(numbers)结果为10 sum_1(1,2,3,4)
2)函数调用时给实参前面加*是拆包,在形参接受到实参时,将其拆开用作迭代
def sum_1(*args): numbers = 0 for i in args: numbers += i print(numbers) list = [1,2,3,4] sum_1(**list)结果为10
5.函数的返回值
def login(username,password): if username == ‘admin‘ and password == ‘‘1234" return True else: return False#通过return关键字来返回函数中的结果,这个时候必须通过一个变量来接受
6.全局变量和局部变量
全局变量就是声明在函数外面的变量
局部变量就是声明在函数内部的变量
局部变量在函数调用时创建,在函数调用完后被销毁
a = 100 #当局部变量和去全局变量同名时,局部变量会覆盖全局变量 def test1(): a = 0 b = 10 print(‘a = ‘, a) print(‘b = ‘, b) test1()结果为0,10 #当局部不存在时,会引用全局变量的值 def test2(): b = 10 print(‘a = ‘, a) print(‘b = ‘, b) test1()结果为100,10 #如何改变全局变量的值,通过在方法中声明global关键字+全局变量 def test3(): global a a -= 10 b = 10 print(‘a = ‘, a) print(‘b = ‘, b) test1()结果为90,10
7.可变类型和不可变类型
1)可变类型就是当变量值发生改变时,它的地址值不会改变,例如list,dict,set
list = [1,2,3] print(id(list)) list = [1,2,3,4] print(id(list)) 结果为两次地址值不同
2)不可变类型就是当变量值发生改变时,它的地址值也会改变,例如:int,str,float,tuple
a = 100 print(id(a)) a = 90 print(id(a)) 结果为两次的地址值不同
8.函数的注释是在函数体当中加上‘‘‘‘‘‘,之后软件会自动产生各个变量以及返回值关键字用来注释每个结构的作用
9.参数在函数名后面的顺序(普通参数,可变参数*args,默认参数,**kwargs参数)