Python基础9(返回值及参数)

函数

  使用函数顺序

1 s = 'qqsssqq'  # 1
2 def my_len(s):  # 2 :定义函数声明变量  my_len(s) 为自定义函数
3     i = 0  # 4
4     for k in s:  # 5
5         i += 1
6     print(i)  # 6
7     return i  # 7
8 my_len(s)  # 3:函数调用

  返回值  return

1 s = "dsfadsfsadsa"
2 def my_len():
3     i = 0
4     for k in s:
5         i += 1
6     # print(i)
7     return i  # 返回值
8 length = my_len()
9 print(length)

  返回值问题

  返回值三种情况

  1》不写返回值

    不写return

    只写return :结束一个函数

    写return none  ---- 不常用  返回none 

  2》返回一个值

    可以返回任意数据类型

    只要返回了就可以接收到

    如果一个程序有多个return只执行第一个return

  3》返回多个值

    多个返回值用多个变量接受:有多少返回值就用多少变量接受,不能多也不能少

 

1 def func():
2     return 1, 2, 3  # 多个值由多个变量接受
3 s1, s2, s3 = func()
4 print(s1, s2, s3)

 

    返回多个值用一个变量接收,得到一个元组

 

1 # print(s1, s2, s3)
2 def func():
3     return 1, 2, 3
4 s1 = func()
5 print(s1)

 

  传递参数传参

 1 def func(s):  # 自定义函数只需要0个参数,接收参数  形式参数  形参
 2     i = 0
 3     for k in s:
 4         i += 1
 5     return i  # 返回值
 6 # s = "384"
 7 # ret = func(s)  # 传递参数,传参
 8 # print(ret)
 9 ret = func([1, 2, 3, 4, 5])  # 传递参数 传参  实参:实际参数
10 print(ret)

  参数

    参数语法

      没有参数:定义函数和调用函数时括号里什么都不写内容

      有一个参数:传什么就是什么

      有多个参数:

        1》位置参数:

 

1 def func(a, b):  # 位置参数  a = 20  b = 30
2     s = a + b
3     return s
4 r = func(20, 30)
5 print(r)

 

    站在实参角度上:

      按照位置传参   :func(20, 30)

 

      按照关键字参  : func(a = 20, b = 30)

      混着用可以(注意):但是必须先按照位置传参,再按关键词传参不能给同一个变量传多个值  func(20, b = 30)

    站在形参的角度上:

      位置参数:必须传,且有几个参数传几个值  

      默认参数:可以不传,如果不传就使用默认参数,如果传就用传的参数

 

1 def func(a,b = '中国人'):
2     s = a + b
3     return s
4 r = func("李四")  # 不传使用默认的b=中国人   参数
5 print(r)
6 s1 = func("王五", "日本人")  # 传使用传递的参数
7 print(s1)
8 s2 = func(b="kk", a='rr')
9 print(s2)

 

  参数定义顺序:必须先定义位置参数,后定义默认参数

  函数嵌套函数

1 # 函数嵌套运行方法
2 def func(l1):  # 1
3     for i in l1:  # 5
4         print(i)  # 6
5 def func2(l1):  # 2
6     func(l1)  # 4
7     for i in l1:  # 7
8         print(i)  # 8
9 func2([1, 2, 3, 4, 5, 6])  # 3

  动态函数:可以接收任何一个参数,惯用 *args

1 def sum(*args):  # 可以接受任何一个参数,惯用*args
2     n = 0
3     for i in args:
4         n += i
5     return n
6 print(sum(1, 2, 3, 4, 5))

  只允许接收任意多个关键字参数 **kwargs

1 def func(**kwargs):
2     return kwargs
3 a = func(a = 1, b = 3, c =6)
4 print(a)  # 输出由 键 a  值  1  ..... 组成的字典

  动态函数另一种传参方式

1 func(*args):  # 组合
2     return args
3 s = func(1, 2, 3, 4, 5)
4 print(s)
5 l = [1, 2, 3, 4, 5, 6]
6 print(func(*l))  # 打散  站在实参的角度上给一个序列加上星号是将这个序列按照顺序打散,而站在形参的角度上,给变量加上星就是组合所有传来的值

截图

**kwargs另一种传参方式

1 def func(**kwargs):  # 组合
2     return args
3 s = func(a = 1,b = 2)
4 print(s)
5 l = {"a": 1, "b": 2}
6 print(func(**l))  # 打散  站在实参的角度上给一个序列加上星号是将这个序列按照顺序打散,而站在形参的角度上,给变量加上星就是组合所有传来的值

截图

函数注释

#  函数注释
def func():
'''
    这个函数实现什么功能
    参数1:
    参数2:
    ......
    return:是字符串或者列表长度
'''
pass

 

posted @ 2017-12-26 18:54  争-渡  阅读(174)  评论(0)    收藏  举报