函数
一。定义 def 关键字 函数名():
函数体
函数 ---- 封装#def 关键字# #定义后的函数就像变量 不调用是不执行的# #函数名() ==函数的调用def code(): print('code a new!')code() # 局部变量
函数的调用: 函数名+()调用函数的时候不在缩进内,必须顶行写 def hanshu(): hanshu... hanshu()或者 if True: hanshu()
二。执行
#函数的执行过程def make(): #第一步 之后没了 print(1)make # 内存空间 当➕ ()时执行print(make)make()print(make())# 打印函数为空#定义——调用——函数体的代码
三。函数的返回值
#return 的作用:#1.没有时 返回 None return 没值时, 返回 None#2.return 有值时,返回#3.传一个内容 则本身 传多个是 一个元组#4.下面的内容不执行#5.执行到此 函数结束
def back(): print('f') return 'a','b' # 下面代码不执行, break 且结束了这个函数 print('能打印吗?') return 1ret = back() # return 多个 只有第一个print(ret) #('a', 'b') 多个的话为元组 返回值 不写内容返回None 不写return 也是None
1.没有返回值 写了return 没有返回值 都默认返回None 2,一个返回值,返回本身 多个返回值,返回的是一个元组 3,return 下面的代码不执行,并且结束这个函数(if缩进里面不这样,同上)
# 返回值def make(): print('1') return '它'*2 return 2*45print(id(ret),id(make()))#地址一样 就是同样的print(ret)
是赋值?
ret = make() 因为他俩一样print(ret) = print(make())make() 函数执行ret 函数执行 一样的
四。函数的参数 形参和实参
#函数怎么样,必须保证参数都有值 无论是默认值,还是赋值的参数
形参,函数定义的时候 位置参数 a,b 传参的时候一一对应 默认参数 a =1 在定义的时候已经定义好了实参,函数调用的时候 位置参数 1,2 传参的时候一一对应给形参 关键字参数a = 1 通过形参的名字指定传值 混合: 形参def func(a,b,c,f=1) 实参func(1,2,3,f=2)传参,将实参返回形参的过程 #位置参数 > 关键字
补充内容 以后会用到 三元运算符
不确定赋值的内容时, 使用!a if a>b else b
五。出错总结:
#不对 多元素 没赋值TypeError: make() missing 1 required positional argument: 'c'
#练习
#函数名+() 不管在什么位置都是在执行函数# print() 到后一个括号才算执行吗?def make(): print(1) print(2) print(3)print(make(),make()) # == make() make() print(make(),make())def make(char,addr,alpa): #形参 形式上的参数 char =?? print(f'{char}') print(char) print(addr) print('%s'%char)make('word',[],'aaa') # 实参 形给了实 #错误 半个黄括号 有的变量没给#判断那个数大的程序:def da(a, b): if a>b: pass else: a= b return aprint(da(10,9))def da(a, b): if a>b: return a else: return bprint(da(1,1))# 返回 条件成立的结果 不成立的结果 c = a if a>b else b#倒序程序li = [1,2,3,65]la = []def reverses(a): for i in range(len(a)-1,-1,-1): la.append(li[i]) return laprint(reverses(li))li = [1,2,2,5,3,65]def func(a): print(a[::-1])func(li)#对# def make(a,b,d, c=1):#不对# def make(a, b, c=1,d):#SyntaxErr #不对 多元素 没赋值TypeError: make() missing 1 required positional argument: 'c' #循环输入函数 程序 def fuzhi(name,age,sex ='男' ): print(name,age,sex)while 1: life_list = input('name,age,sex').split(',') if len(life_list)>2: a,b,c= life_list fuzhi(a,b,c) else: a,b = life_list fuzhi(a,b) #函数怎么样,必须保证参数都有值 无论是默认值,还是赋值的参数 def fun(a,b,c,d=1): #位置+形参 (位置+默认)混合形参 print(a,b,c,d)fun(1,2,3) #位置参数fun(1,3,4,d=4) #实参 (位置+关键字) 混合实参 替换了# fun(d=4, 1, 3, 4) #不对 #位置参数 > 关键字# open('liu','w','utf-8')# 不对 因为‘utf-8’是 第四个open('liu','w',encoding='utf-8')#所以