函数的定义

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))
位置实参

相关文章: