函数
一。定义 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())# 打印函数为空 #定义——调用——函数体的代码
三。函数的返回值
def back(): print('f') return 'a','b' # 下面代码不执行, break 且结束了这个函数 print('能打印吗?') return 1 ret = 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'
#__author : 'liuyang' #date : 2019/3/13 0013 上午 8:34 ''' a = 'b' c = 'd' print(a is c) print(a == c) d = {} lis = ['alex','wusir','太白'] a = d.fromkeys(lis,[]) print(a) a['alex'] = 1 print(a) a = d.fromkeys([1,2,3],'str') print(a) # print(id(a[1])) # print(id(a[2])) # print() # a[1] = 2 # print(id(a[1]),id(a[2])) # print(a) # #函数 ---- 封装 # # #def 关键字 # #定义后的函数就像变量 不调用是不执行的 # #函数名() ==函数的调用 def code(): print('code a new!') code() def code(): print('a') code() # 局部变量 #函数的执行过程 def make(): #第一步 之后没了 print(1) make # 内存空间 当➕ ()时执行 print(make) make() print(make())# 打印函数为空 #定义——调用——函数体的代码 #函数的返回值 def back(): print('f') return 'a','b' # 下面代码不执行, break 且结束了这个函数 print('能打印吗?') return 1 ret = back() # return 多个 只有第一个 print(ret) #('a', 'b') 多个的话为元组 返回值 不写内容返回None 不写return 也是None # 返回值 def make(): print('1') return '它'*2 return 2*45 ret = make() print(id(ret),id(make())) print() print(ret) print(make()) #函数名+() 不管在什么位置都是在执行函数 # print() 到后一个括号才算执行吗? def make(): print(1) print(2) print(3) print(make(),make()) # == make() make() print(make(),make()) ''' #函数的参数 def make(char): #形参 形式上的参数 char =?? print('打开%s'%char) make('word') # 实参 形给了实 #将实参传递给形参 -------》传参 def make(char,addr,alpa): #形参 形式上的参数 char =?? print(f'{char}') print(char) print(addr) print('%s'%char) make('word',[],'aaa') # 实参 形给了实 #错误 半个黄括号 有的变量没给 #一一对应 def summ(a,b): c = a+b return c print(summ(1,1)) def da(a, b): if a>b: pass else: a= b return a print(da(10,9)) def da(a, b): if a>b: return a else: return b print(da(1,1)) def da(a, b): # 返回 条件成立的结果 不成立的结果 c = a if a>b else b return c # return a if a>b else b print(da(1,1)) # def de(a,b): # c,b = a if a>b else b # print(c,b) # print(de(1,2)) li = [1,2,3,65] la = [] def reverses(a): for i in range(len(a)-1,-1,-1): # print(li[i]) la.append(li[i]) return la # reverses(li) print(reverses(li)) # li = [1,2,2,5,3,65] # la = [] # def sort(a): # for i in range(0,len(a)-1,1): # if i # la.append(li[i]) # return la # # reverses(li) # print(reverses(li)) li = [1,2,2,5,3,65] def func(a): print(a[::-1]) func(li) li = [1,2,2,5,3,65] # def fun(b): # for l in b: def make(a,b): print(a,b) # make(1,2,1) #不能付两个值吗 只能1对1 吗? #对 # def make(a,b,d, c=1): #不对 # def make(a, b, c=1,d):#SyntaxError: non-default argument follows default argument # print(a,b,d) # make(1,2,3) #形参 默认在前 #不对 多元素 没赋值TypeError: make() missing 1 required positional argument: 'c' # def make(a,b,d, c): # print(a,b,c) # make(1,1,2) ''' 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) #函数怎么样,必须保证参数都有值 无论是默认值,还是赋值的参数 ''' a = 11 b = 13 print(a if a>b else b) li = [1,2,5,3,65] a = [] def sortt(c): b = 0 for ll in li: if ll > b: for i in li: a.append(i) b = i print(a) sortt(li) 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')#所以