函数
函数的初识
格式
def func_name(*args, **kwargs):
函数体
完整函数格式如上,其中 def为声明,不可改变,必须这样写;def 与函数名之间使用一个空格隔开,函数名的命名规则与变量的命名规则相同;函数名后边紧接着是括号,括号里边设置一些参数,也可以不设定;括号后边紧接着是因为格式的冒号。下边一行是函数体的内容,函数体必须缩进于函数名一个tab的长度(两个或者四个空格的距离),所有的缩进的长度必须一致。
执行
执行函数使用 函数名() 的格式,以上变的函数为例,使用func_name()进行函数的调用。
函数是以功能为导向的。
def login(): pass
def register(): pass
1 def my_len():
2 l1 = [1, 2, 3, 1, 6, 9, 10]
3 count = 0
4 for i in l1:
5 count += 1
6 my_len()
函数的返回值
函数使用return将值返回出来,但是再执行return以后,函数就执行结束了,不管后边有没有代码都不再执行。
函数中遇到 return 结束函数,后面代码不执行。
def login(): print(111) print(222) return print(333)
login()
从上边的执行结果就可以看出,return 后一行的 print(333) 没有执行。
将函数里面的值返回给函数的执行者(调用者)
第一种情况:
当只有return且其后边没有跟任何内容时,则默认返回值为None。
def login(): a = 2 b = 3 print(111) print(a, b) return
print(login())
第二种情况:
return None
当return None时,其返回值也为None,与第一种情况是一样的。
第三种情况:
return 单个值(返回的值与单个值的类型相同)
def login(): a = 2 b = 3 return a
print(login(), type(login()))
def login(): a = 2 b = 3 return [1, 2]
print(login(), type(login()))
def login(): a = 2 b = 3 return [1, 2]
ret = login() a, b = ret print(a, b)
第四种情况:
return 多个值(以元组的形式返回给函数的调用者)
def login(): a = 2 b = 3 return 1, 'alex', [1, 2], {'name': '老男孩'}
ret = login() print(ret)
def my_len(): l1 = [1, 2, 3, 1, 6, 9, 100] count = 0 for i in l1: count += 1 return count
print(my_len())
什么是None
所有空集合、空列表、空字典、空字符串等等都为None。
函数的参数
实参角度
位置参数
一一对应,形参实参数量相等
def my_len(a): # a 形式参数,形参 count = 0 for i in a: count += 1 return count
l1 = [1, 2, 3, 1, 6, 9, 100] print(my_len(l1)) # 实参
def my_len(a): # a 形式参数,形参 count = 0 for i in a: count += 1 return count
l1 = [1, 2, 3, 1, 6, 9, 100] my_len(l1) # 实际参数,实参
ret = my_len(l1)
print(ret)
print(my_len(l1))
def my_len(a): # a 形式参数,形参 count = 0 for i in a: count += 1 return count
s1 = 'fhdsjfdsfsadfgsd' my_len(s1) ret = my_len(s1) print(ret) print(my_len(s1)) # 实际参数,实参
def tes(a, b, c): print(111) print(a, b, c)
tes(22, 'alex', [11, 22, 33])
关键字参数
一一对应,实参形参数量相等,实参顺序可变。
def func(x, y): # 形式参数 print(x, y)
func(y=3333, x=4) # 关键字参数
混合参数
关键字参数必须在位置参数的后边。
def func(x, y, z): print(x, y, z)
func(111, 222, z=555) # 混合传参 位置参数必须在前边
如果关键字参数没有在位置参数的后边时,则会报错。
def func(x, y, z): print(x, y, z)
func(111, z=555, 222)
形参角度
位置参数
一一对应,形参实参数量相等,并且是按照位置进行传参。
def func2(y, x): # 形式参数 print(x, y)
func2(1, 2)
默认字参数
默认参数必须在形参的位置参数后面。
默认参数不传值则为默认值,传值则覆盖默认值。
def func2(y, x, z= 1000): print(x, y, z)
func2(1, 2, 3000)
def input_information(name, sex='男'): with open('information', encoding='utf-8', mode='a') as f1: f1.write('{} {} '.format(name,sex)) while True: msg = input('请输入用户的姓名,性别Q或者q退出').strip() if msg.upper() == 'Q': break if ',' in msg: name1, sex1 = msg.split(',') input_information(name1, sex1) else: input_information(msg)