函数初始:
什么是函数?
函数:是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段
一个函数封装一个功能。
1,减少重复代码。
2,增加代码的可读性。
函数的结构
def my_len(): # def 关键词开头,空格之后接函数名称和圆括号(),最后还有一个":"。 s = 'abcdefg' # 函数体 count = 0 for i in s: count += 1 my_len() # 调用函数
def 函数名():
函数体
函数的返回值
函数人返回值: return
return 有两个作用
1、结束整个函数
2、给函数的执行者(调用者)返回值
return 单个值 ------> 单个值(数据类型不变)
return 多个值 ----> 返回一个元组(多个值)
#函数定义 def mylen(): """计算s1的长度""" s1 = "hello world" length = 0 for i in s1: length = length+1 return length # 将length返回给 mylen() #函数调用 str_len = mylen() print('str_len : %s'%str_len)
1、不写return返回None,return后面不加返回值,也返回None
第一个函数没写return,返回一个None
2、return可以返回一个值
#函数定义 def mylen(): """计算s1的长度""" s1 = "hello world" length = 0 for i in s1: length = length+1 return length #函数调用 str_len = mylen() print('str_len : %s'%str_len)
3、return可以返回多个值,多个值以元组的形式返回,可以用多个值来接受
def sb(): return 1, 2, 3, 4 reg = sb() print(reg) # 以元组的形式返回一个值 (1, 2, 3, 4) a, b, c, d = reg # 用 a,b,c,d 接收(1,2,3,4) print(a, b, c, d)
函数的参数
def date(a, b): # 函数的定义:形参,形式参数 print(a, b) print('打开探探') print('附近的人') print('左滑一下') print('右滑一下') print('锁定目标,联系') print('相约...') x = 2 y = 3 # 把x,y的值传给a,b。然后打印a,b date(x, y) # 函数的执行者:实参,实际的参数
实参分三种:
1、位置实参 : 从左至右一一对应
2、关键字实参 : 一一对应,顺序随便
3、混合传参: 位置参数一定要在关键字参数前面
# 混合传参的例子 def date(meetplace, sex, positon, soft): print('打开手机') print('打开%s软件,搜索%s附近的%s' % (soft, positon, sex)) print('左滑一下') print('右滑一下') print('锁定目标,联系') print('相约%s' % (meetplace)) date('酒吧', soft='微信', sex='girl', positon='深圳南山区') # '酒吧' 是位置参数,需要放在所有关键字参数的前面
形参也分三种:
1、位置形参: 从左至右,一一对应
2、默认形参: 放在位置参数后面
3、万能形参: 接受实参角度所有的位置参数,关键字参数 (*args, **kwargs)
默认形参
def date(meetplace,positon,soft,sex='girl'): # 默认形参要 sex=girl 在位置形参后面 print('打开手机') print('打开%s软件,搜索%s附近的%s' % (soft, positon, sex)) print('左滑一下') print('右滑一下') print('锁定目标,联系') print('相约%s' %(meetplace)) date('酒吧',soft='微信',positon='深圳南山区',sex='laddyboy')
默认形参的陷阱
def func1(a, l1=[], l=[]): l.append(a) return l # print(func1(666)) # [666] # print(func1(22)) # [666,22] # 陷阱 传22打印的却是 [666,22] print(func1(33, l=[], l1=[1])) # [33] 实参传给默认形参时,实参可以是位置实参或者关键字实参
万能参数 :两个形参参数,接受我所有的位置参数,关键字参数 (*args , **kwargs)
def kw(*args, **kwargs): print(args) print(kwargs) kw(1,2,3,4,5,6,'你好',sex='man',place='白石洲') # 打印结果 # (1, 2, 3, 4, 5, 6, '你好') # {'sex': 'man', 'place': '白石洲'}
三元运算
# 写一个函数,完成一个功能: 给函数传入两个数字对象,将较大的数字返回给函数的调用者。 def max1(a, b): return a if a > b else b # if a>b 输出 a else b ret = max1(100, 10) print(ret)