函数的定义
1 函数strlen叫做函数名
函数名
必须由字母下划线数字组成,不能是关键字,不能是数字开头
函数名还是要有一定的意义能够简单说明函数的功能
2 def是关键字
3 ():必须写
4 函数体内尽量写注释,方便查看代码
5 函数的调用:函数名+括号
def strlen(): #函数名
'''
计算字符串长度的函数 这里写的是注释,方便查看代码
'''
s = 'hello world'
length = 0
for i in s:
length += 1
return length #函数的返回值
leng = strlen() #函数的调用
print(leng)
函数调用的三种形式
register() # 语句形式
def max2(x,y):
if x > y:
return x
else:
return y
# res=max2(10,20)*12 # 表达式
res=max2(max2(10,20),30) # 将函数的调用当作参数传给另外一个函数
print(res)
函数的返回值
函数返回值可以是任意的数据类型
如果有返回值:必须要用变量接收才会有效果
函数可以没有返回值,默认返回给None
函数的返回值为None有三种情况
不写返回值 只写一个return return None (几乎不用)
return除了有返回值的功能,还有结束函数执行的的功能
函数内可以有多个return,但只要执行一次,整个函数就立即结束,并且将return后的值返回
函数的返回值不为None,有返回值
返回一个值(一个变量) 返回多个值(多个变量),多个值之间用逗号区分 接收:可以用一个变量接收,以元组的形式返回 也可以用多个变量接收,返回几个就用几个变量去接收 相当于解压式接收
函数的参数
实参:函数调用的时候传入的参数
形参:函数定义的时候括号内的参数
定义阶段的形参
默认形参
在定义阶段,就已经为形参赋值,该形参称之为默认参数
特点:
1. 定义阶段就已经有值意味着调用阶段可以不用传值
2. 位置形参必须放到默认形参的前面
3. 默认形参的值在函数定义阶段就已经固定死了,定义阶段之后的改动不会影响该值
4. 默认形参的值通常应该是不可变类型
默认形参
def stu_info(name,sex = 'male'): #默认参数,有一个默认值
print('name:%s,sex:%s'%(name,sex))
stu_info('zioe') #默认参数可以不传值
stu_info('joek','male') #如果传值了,覆盖默认值
关于默认参数形成流程
s = 'male'
def stu_info(name,sex=s): #默认参数,有一个默认值
print('name:%s,sex:%s'%(name,sex))
s = 'female' #不影响定义时sex的值 此时s标签被撕下来,贴在了新的值上,变的是标签不是值
print(stu_info("饭跑跑"))
# 打印出来的就是male 因为开始sex=x=male,然后s是新开辟的一个空间存储female
不要设置可变数据类型为默认参数
b = [] def func(a = []): a.append(1) print(a) func().... 打印下去你会发现这个[]列表一直在追加
位置形参: 在定义阶段,按照从左到右的顺序依次定义的形参称之为位置形参
特点: 但凡时按照位置定义的形参,必须被传值,多一个不行少一个也不行
def func(x,y,z): print(x,y,z) func(1,2) func(1,2,3) func(1,2,3,4)
调用阶段的实参
位置参数:
位置实参: 在调用阶段,按照从左到右的顺序依次传入的值称之为位置实参
特点: 与形参一一对应
1 #coding:utf-8 2 3 def my_max(a,b): #定义:位置参数 4 '''返回两个值之间的最大值''' 5 print(a,b) 6 if a > b: 7 return a 8 else: 9 return b 10 print(my_max(10,20)) 11 print(my_max(30,20))