函数
def 关键字 函数名:
def my_len(): l = [1,2,3,4] count = 0 for i in l: count +=1 print(count)
> my_len #执行函数 函数名()
> ##### 函数的优点:
> 减少代码的重复率。
> 增强代码的阅读性。
>
> ##### 函数主要目的
> 封装一个函数
>
#### 函数的返回值return
>1,函数中如果遇到return,则直接结束函数。
>2.给函数的执行者返回值。#执行函数 函数名()
> (1)return None
> (2)return 单个值 原封不动返回
> (3)return 多个值 一个元祖,所有的返回值作为元祖的每一个函数
> def my_len(): > s = 'iosiodfisng223oji' > count = 0 > for i in s: > count+=1 > return count > print(my_len())
> def funcl(): > a = 1 > b = 2 > c = a+ b > d ='alex' > e = [1,2,3] > return c,d,e > ret = funcl() > print(ret,type(ret))
> 工作中,函数中尽量不要出现print
>
#### 函数的传参
> ##### 实参
> 1.位置参数:按顺序一一对应
> ``````python
> def funcl(a,b):
> c = a + b
> d = a - b
> return a
> return b
> print(funcl(1,2))
> ``````
> 三元运算:只针对于简单的if else 这样的结构。
> def conpare(x,y): > return x if x>y else y > print(conpare(1,2))
> 2.关键字参数:可以不按照顺序,但是必须一一对应
> def funcl(x,y): > return x + y > print(funcl(y=2,x=1))
> 3.混合传参:关键字参数一定要在位置参数后面
> def funcl(a,b,x,y): > return x + y > name = 'alex' > print(funcl(3,4,name,y=2,x=1))
> 形参
> 1.位置参数:按照顺序 一一对应
> def func(x,y,z): > print(x,y,z) > func(1,2,3)
> 2.默认参数:给其传值,将原默认参数覆盖掉,不传值,不报错,使用默认值
> 应用场景:不经常改变的值
> def funcl(x,y,a=666): > print(x,y,a) > funcl(1,2)
> 默认参数的陷阱
>默认参数若是可变的数据类型,它始终使用的是一个。
> def funcl(x,l=[]): > l.append(x) > return l1 > ret = funcl(1) > print(ret,id(ret)) > ret1 = funcl(100) > print(ret,id(ret))
存储姓名和年龄写入文件的函数
def namelist(name,sex='男'): '''存储姓名和年龄''' with open('a',encoding='utf-8',mode='a') as f1: f1.write('{}|{}\n'.format(name,sex)) while 1: name,sex = input('请输入姓名,性别:').strip().replace(',',',').split(',') #将中文逗号换成英文的逗号,然后以逗号分开 if name.upper() == 'Q':break if sex.strip(): namelist(name,sex) else: namelist(name)