函数的定义与函数的调用是两个部分
定义函数的时候里面的代码不执行,等到调用函数的时候再执行
只写return和不写return返回None
函数遇到return,这个函数就被结束
元祖和列表都可以解包,字典也可以
def func(): lis=['火狐','谷歌'] for i in lis: print(i) return 0 def func1(): print(func()) #这里返回的是return 0 后面的0,不打印什么也没有 lis=['火狐','谷歌'] for i in lis: print(i) return 1 print(func1())
参数:
#站在实参的角度上:
#按照位置传参
#按照关键字传参
#混着用可以:但是 必须先按照位置传参,再按照关键字传参数 (a=1,b=2)(1,2)(1,b=2)可以 (a=1,2)(1,a=2)不可以
# 不能给同一个变量传多个值
#站在形参的角度上
#位置参数:必须传,且有几个参数就传几个值
#默认参数: 可以不传,如果不传就是用默认的参数,如果传了就用传的
def classmate(name,sex='男'): print('%s : %s'%(name,sex)) classmate('二哥') classmate('小孟') classmate('大猛') classmate('朗哥','女')
#只有调用函数的时候 实参
#按照位置传 : 直接写参数的值
#按照关键字: 关键字 = 值
#定义函数的时候: 形参
#位置参数 : 直接定义参数
#默认参数,关键字参数 :参数名 = '默认的值'
#动态参数 : 可以接受任意多个参数,
#参数名之前加*,习惯参数名args,
#参数名之前加**,习惯参数名kwargs
#顺序:位置参数,*args,默认参数,**kwargs
def classmate(name,sex): print('%s : %s'%(name,sex)) classmate('二哥','男') classmate(sex='男',name = '二哥') def classmate(name,sex='男'): print('%s : %s'%(name,sex)) classmate('二哥') classmate('朗哥',sex= '女')
# 动态参数有两种:可以接受任意个参数
#*args : 接收的是按照位置传参的值,组织成一个元组
#**kwargs: 接受的是按照关键字传参的值,组织成一个字典
#args必须在kwargs之前