1、函数
def my_len(): l = [1,2,3,4,6,5,7] count = 0 for i in l: count += 1 print(count) my_len()
定义的my_len()方法时,其结果也可以直接获取。
这里,我们将my_len()称为执行函数,其组成是由 :函数名()。
函数的优点:
1. 函数可以减少代码的重复性
2. 函数可以增强代码的阅读性
2、return的作用
def func1(): a = 1 b = 2 c = a + b return c print(func1())
1. 函数中如果遇到return,则直接结束函数
2. 给函数中的执行者(函数名():整体是函数的执行者)返回值
3. return 返回单个值,即原封不动的返回(是什么类型,就返回什么类型值)
4. return 返回多个值,即返回一个元组,所有值都是元组的一个元素
注:在工作中,通常函数尽量不要使用print。
def func_1(): a = 1 b = 2 c = a + b d = [1,2,3] e = (4,5,6) f = 'Chris' return c,d,e,f print(func_1()) # (3, [1, 2, 3], (4, 5, 6), 'Chris')
3、实参
3.1位置实参 按照顺序,一一对应
def func1(x,y): print(x,y) print(1,2)
3.2 关键字参数 可以不按照舒服,但是要一一对应
def func2 (x,y): return x + y print(func2(y = 100,x = 32))
3.3 混合参数 可以不按照顺序,但是要一一对应
def func1(a,b,x,y): return a + b + x + y print(func1(100,56,y= 100,x= 32)) def func1(a,b,n,x,y): return a + b + x + y name = 'Chris' print(func1(100 , 56, name, y= 100, x= 32)) # name是位置参数
4、形参
4.1 位置参数:按照顺序一一对应
def func(x,y,z): print(x,y,z) func(1,2,3)
4.2 默认参数:给其传参,将默认参数覆盖,不传值时不报错,使用默认值
def func1(x,y,a= 666): print(x,y,a) func1(1,2) # 不传参,则为默认值 (1 2 666 ) func1(1,2,256) # 传参,则将默认值覆盖 (1 2 256)
应用场合:不机场改变参数,但是一直再用
不断输入个人信息,如姓名与性别。并将信息写入文件中
方法一:
while 1: name,sex = input('请输入姓名与性别,中间用逗号分隔:').strip().replace(',',',').split(',') if name.upper() == 'Q': break with open('a1.txt',encoding='utf-8',mode= 'a') as f1: f1.write('{}|{} '.format(name,sex))
方法二:
def namelist(name,sex = '男'): with open('a1.txt',encoding='utf-8',mode='a') as f1: f1.write('{}|{} '.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) namelist(name,sex)
默认参数的陷阱
默认参数若是可变数据类型(如:list),但他始终使用的是一个,即默认参数公用一个内存地址。
def func1(x,l1=[]): l1.append(x) return l1 ret = func1(1) print(ret,id(ret)) # [1] 2426801554952 ret2 = func1(100) print(ret2,id(ret2)) # [1, 100] 2426801554952