一:函数的定义
def关键字开头,空格加函数名加圆括号最后加冒号-------------------------def innner():
函数名:只能包含字符串,字母,数字下划线,并且不能用数字开头。
二:函数的调用
无返回值:函数名+括号-----------------------------------inner()
有返回值:变量名=函数名()------------------------------ret1=inner()
多个变量接收多个返回值:变量名1,变量名2.......=函数名()--------------ret1=inner()
ret2=timer()
圆括号用来接收参数。 若传入多个参数: 应按先位置传值,再按关键字传值 具体的传入顺序应按照函数定义的参数情况而定
ef wukong(): return 1,2,3,4,5 def bajie(): return 'hello word',4,['hwbhwb','jwjjwbdjwbd',{'jsbcjsbj':'bxhbxbwhxbw'}] ret1=wukong() print(ret1) ret2=bajie() print(ret2)
(1, 2, 3, 4, 5)
('hello word', 4, ['hwbhwb', 'jwjjwbdjwbd', {'jsbcjsbj': 'bxhbxbwhxbw'}])
#函数的定义 def mylen(): s1='hello word' length=0 for i in s1: length=length+1 print(length) #函数的调用 wode_len=mylen() print(wode_len)
10
None
三:函数的返回值
return关键字:是返回的意思,return后面的值就是返回值。
有返回值:定义变量接收返回值。
多个返回值:定义多个变量接收,变量数和返回值应一致。
没有返回值:不写return的情况下,默认返回一个None.
只写return不写其他内容,也会返回None。(一旦遇到return,就结束函数)
return[表达式] 结束函数。不带表达式的return相当于返回 None def 函数名(参数1,参数2,*args,默认参数,**kwargs) return 返回值
def ret_demo(): print(111) return print(222) ret = ret_demo() print(ret)
111
None
四:参数
实参:在定义函数时调用的。
参数种类与传递顺序:
按位置传参:*()或*[]可传多个位置参数。
按关键字传参:**{}的形式可传多个关键字参数。
按位置传递多个参数。
def mymax(x,y):
the_max=x if x > y else y
return the_max
ma=mymax(10,20)
print(ma)
20
按关键字传参
ef mymax(x,y):
print(x,y)
the_max=x if x > y else y
return the_max
ma=mymax(x=100,y=120)
print(ma)
100 120
120
形参:在调用函数时接收的。
参数种类与定义顺序:
位置参数:
动态*args参数:接收多个位置参数,并组织成元祖。没有值则为()
动态**wkargs参数:接收多个位置参数,并组织成字典。没有值则为{}
默认参数:设置默认值,调用时可以不传参数。定义不可变数据类型。
(位置参数必须在关键字参数前面,每个参数只能赋值一次。
默认参数
def my_info(name,sex='male'):#设定默认参数 print(name,sex) my_info('wang',) my_info('xie','female') wang male xie female
*args 动态传参
def mysum(*args):
print(args)
mysum(1,2,3)
(1, 2, 3)
动态**kwargs
def my_info(**kwargs): print(kwargs) my_info(name='wangshanglong',sex='male')
{'name': 'wangshanglong', 'sex': 'male'}
作业:
#1 、写函数,计算传入字符串中【数字】、【字母】、【空格] 以及 【其他】的个数 def my_len(msg): #----定义函数---- sz=zm=kg=qt=0 for i in msg: if i.isdigit(): sz+=1 elif i.isalpha(): zm+=1 elif i.isspace(): kg+=1 else: qt+=1 return sz,zm,kg,qt m = my_len('fwi,445151518484, ,-----###$^R&^') print(m) (12, 4, 1, 15)
3、写函数,判断用户传入的对象(字符串、列表、元组)长度是否大于5。 def my_len(s): #----定义函数------ if len(s) > 5:#----判断s的长度是否大于5------ return True#---是----- else: return False#----否--- s=my_len('[kwmk,iwmcimw,icwiciw,]')#-----调用my_len,并传递参数---- print(s)#------打印s------ True
def my_len(s):#----定义函数---- if len(s)>2:#----判断s是否大于2---- return s[0:2]#----大于2保留前两位---- else: return s#----小于2返回给调用者---- s=my_len(['xua',789,{'name':'wang'}])#----调用并传递参数---- print(s)#----打印---- ['xua', 789]