day10---初识函数

1. 函数的定义和调用

  • 定义函数的关键字:def

  • 函数名的规则跟变量一样

  • 函数名后必须有()

  • 函数以及参数下面应该有对应的注释描述信息

  • 调用函数时必须加上()

  • 声明函数: def 函数名()

  • 调用函数: 函数名()

  • 函数的执行顺序是从上到下执行

  • 函数体可以为空,但是调用时返回None

def yan_len():
    lst = [1, 2, 3, 4, 5, 6]
    count = 0
    for i in lst:
        count += 1
    return count
count_lst = yan_len()
print(count_lst)
>>>
6
  • yan_len:定义的函数名
  • 函数内部的代码叫做函数体
  • return count:函数的返回值
  • count_lst = yan_len():函数的调用,也是函数返回值的接收

2. 函数的返回值

  • 函数的返回值使用:return

  • 函数体中return之后的代码不会再执行

  • return可以不用写,也可以返回一个值,也可以返回多个值

  • return没有返回值时:

    • 不写return等于return None
    • 只写一个return,不指定返回值,也等于return None
    • return的作用:
      • 返回值
      • 终止一个函数的继续运行
  • return返回一个值时,可以返回任意的数据类型。返回什么,就接收什么

  • return返回多个值:

    • 用一个变量接收返回值,接收到的是一个元组类型
    • 返回值有多个变量接收时,返回值的个数应该跟接收变量的个数完全一致

3. 函数的参数

def yan(info):
    count = 0
    for i in info:
        count += 1
    return count
print(yan('yy'))
>>>
2
  • yan(info):接收参数,又叫形参

  • yan('yy'):传参数,又叫实参

  • 函数参数包括:实参和形参。实参是实际传的参数,形参是接收参数的变量

  • 传参数可以传任意的数据类型,传的哪种类型接收的就是哪种,可以支持传多个参数,多个参数分别可以传任意的数据类型

def yan(num):
    if len(num) > 3:
        return True
    else:
        return False
print(yan('liyan'))
print(yan([1, 2, 3]))
print(yan({'name': 'yy'}))
print(yan(('a', 1, 2, 'bbb')))
>>>
True
False
False
True
  • 在实参的角度,有两种传参的方式:

    • 按照位置传参数
    def yy(x, y, z):
    return x, y, z
    print(yy('aaa', 'False', 100))
    >>>
    ('aaa', 'False', 100)
    
    • 按照关键字传参数
    def yy(x, y, z):
    return x, y, z
    print(yy(y = 'aaa', z = 'False', x = 100))
    >>>
    (100, 'aaa', 'False')
    
  • 按照位置和关键字传参数可以混用,条件是:

    • 先传按位置的,再传按关键字的
    • 按照位置传参只能接收一个值,不能重复接收
def yy(x, y, z):
    return x, y, z
print(yy(False,z = 'aaa', y = 100))
>>>
(False, 100, 'aaa')
  • 形参在接收的角度上,又叫位置参数,形参的数量必须和实参的数量一致

def yan(arg1, arg2):
    print(arg1)
    print(arg2)
yan('aaa', 'bbb', 'ccc')
>>>
TypeError: yan() takes 2 positional arguments but 3 were given
  • 默认参数:

    • 默认参数可以不用传参
    • 不传参的情况下使用默认的值
    def classmate(name, sex='男'):
        print('姓名:%s,性别:%s' % (name, sex))
    classmate('李岩')
    >>>
    姓名:李岩,性别:男
    
    • 如果有传参,就使用传的值
    def classmate(name, sex='男'):
    print('姓名:%s,性别:%s' % (name, sex))
    classmate('丫丫', '女')
    >>>
    姓名:丫丫,性别:女
    
    • 魔术用法:默认参数尽量避免使用可变数据类型
    def default_param(a, l = []):
    l.append(a)
    print(l)
    default_param('liyan')
    default_param('yy')
    default_param('yange')
    >>>
    ['liyan']
    ['liyan', 'yy']
    ['liyan', 'yy', 'yange']
    
    def default_param(a, l = []):
    l.append(a)
    print(l)
    default_param('liyan', [])
    default_param('yy', [])
    default_param('yange', [])
    >>>
    ['liyan']
    ['yy']
    ['yange']
    
posted @ 2017-10-31 15:22  _岩哥  阅读(144)  评论(0)    收藏  举报