day9:初识函数

自定义函数:可以在任何需要它的地方调用

s = "测量字符串长度"
def my_len():        #函数定义
     i = 0
     for k in s:
         i += 1
     return i        #写在return后面的叫:返回值
length = my_len()    #函数调用
print(length)

return的作用:

1. 一旦遇到return, 结束整个函数
2. return和返回值之间要有空格, 可以返回多个任意数据类型的值

返回值的3种情况:

  没有返回值: --> 返回None
    没写return
    只写return --> 结束一个函数的继续
    return None #不常用
  返回1个值:
    可以返回任何数据类型
    只要返回就可以接收到
    如果在一个程序中有多个return, 那么只执行第一个
  返回多个值:
    用多个变量接收 --> 有多少返回值就用多少变量接收
    用一个变量接收 --> 得到的是一个元组

函数的参数:

  没有参数
    定义函数和调用函数时括号里都不写内容
  有一个参数
    传什么就是什么
  有多个参数
    形参: 位置参数、默认参数
    实参: 位置参数、关键字参数

def my_len(s):  #()用来接收参数、这里的变量"s"被称为:形式参数(形参)
    i = 0
    for k in s:
        i += 1
    return i
length = my_len("hello world")  #这个过程叫:传递参数(传参)、这里的"hello world"被称为:实际参数(实参)
print(length)
def my_sum(a,b):     #a、b为位置参数
    print(a,b)
    res = a+b
    return res
ret = my_sum(1,2)    #1、2为位置参数
print(ret)
def classmate(name, sex):    #都是位置参数
    print("%s : %s" % (name, sex))
classmate("ppd", "")       #都是位置参数
classmate(sex="", name="ppd")    #都是关键字参数
def classmate(name, sex=""):    #name为位置参数, sex="男为默认参数
    print("%s : %s" % (name, sex))
classmate("ppd")        #位置参数
classmate("Lisa", sex="")       #Lisa为位置参数, sex="女"为关键字参数

站在形参的角度上:

  位置参数:必须传,且有几个参数就传几个值
  默认参数:可以不传,如果不传就是用默认的参数,如果传了就用传的

站在实参的角度上:

  按照位置传参           #1、2
  按照关键字传参       #a=1、b=2
  混着传参                 #可以,但是,必须先按照位置传参,再按照关键字传参数 --> 1、b=2
    不能给同一个变量传多个值

只有调用函数的时候
  按照位置传:直接写参数的值
  按照关键字:关键字 = 值

定义函数的时候:先定义位置参数、再定义默认参数

  位置参数::直接定义参数
  默认参数/关键字参数:参数名 = "默认的值"
  动态参数: 可以接受任意多个参数
          参数名之前加*,习惯参数名args
                         参数名之前加**,习惯参数名kwargs
              动态参数有两种:可以接受任意个参数
                         *args      :接收多个按照位置传参的值, 组织成一个元组
                         **kwargs :接收多个按照关键字传参的值, 组织成一个字典
                         args必须在kwargs之前
  顺序:位置参数, *args,,默认参数,**kwargs

动态参数的另一种传参方式:

  def func(*args):    #站在形参的角度上, 给变量加上*/**, 就是组合所有传来的值
    print(args)

  func(1,2,3,4,5)
  lis = [1,2,3,4,5]
  func1{"a": 1, "b": 2}
  dic = {"a": 1, "b": 2}
  func(*lis) #站在实参的角度上, 给一个序列/字典加上*/**, 就是将这个序列/字典按照顺序打散
  func1(**dic)

函数的注释:

  def func():
    '''这个函数实现了什么功能'''
    参数1 -->  什么数据类型
    参数2 -->  什么数据类型
    return --> 是字符串或者列表的长度
    pass

猜你喜欢

转载自www.cnblogs.com/believepd/p/9551588.html