Python Day 9 函数(函数的初识,函数的参数)

Python Day 9  函数(函数的初识,函数的参数)

enumerate:枚举,对于一个可迭代的(iterable)/可遍历的对象(如列表、字符串),enumerate将其组成一个索引序列,利用它可以同时获得索引和值。

可以自定义起始值

li = ['alex','银角','女神','egon','太白']
for i in enumerate(li):
    print(i)
for index,name in enumerate(li,1):
    print(index,name)
for index, name in enumerate(li, 100):  # 起始位置默认是0,可更改
    print(index, name)


(0, 'alex')
(1, '银角')
(2, '女神')
(3, 'egon')
(4, '太白')
1 alex
2 银角
3 女神
4 egon
5 太白
100 alex
101 银角
102 女神
103 egon
104 太白

函数的初识

函数构成

  def 关键字 空格 函数名(与变量设置相同): 英文的冒号
    函数体

  执行函数 :函数名+()

例:

def my_len(x):
    count = 0
    for i in x:
       count += 1
    return count

l1 = [1, 2, 3, ['a','b'], {'name':'zhansan'},]
print(my_len(l1))

函数的返回值

return:

  1,函数中遇到return 结束函数,下面代码不执行。
  2,将函数里面的值返回给函数的执行者(调用者)。

    第一种情况:
      只有return,返回None
    第二种情况:
      return None
    第三种情况:
      return 单个值(返回的值与单个值的类型相同)
    第四种情况:
      return 多个值 以元组的形式返回给函数的调用者。

什么是None?
所有的空集合,空列表,空字典.... --->None

三元运算

def my_max(x,y):
    if x > y:
        return x
    else:
        return y

===================
#三元运算

c = x if x > y else y    # c   x  y
print(c)

#
def my_max(x,y):
    return x if x > y else y

函数的参数

  实参角度

    位置参数
      一一对应,实参形参数量相等

def my_max(x,y):      #x ,y 形参,形式参数
    return x if x > y else y
print(my_max(10,11))  #10,11 实参,实际参数

    关键字参数
      一一对应,实参形参数量相等,实参顺序可变

def my_max(x,y):      #x ,y 形参,形式参数
    return x if x > y else y
print(my_max(x=10,y=11))  #关键字传参,一一对应

    混合参数 (位置参数,关键字参数)
      关键字参数必须在位置参数后面

def my_max(x,y):      #x ,y 形参,形式参数
    return x if x > y else y
print(my_max(10,y=11))  #混合传参,关键字参数必须在位置参数后面

  形参角度

    位置参数

      一一对应,实参形参数量相等

def my_max(x,y):      #x ,y 形参,形式参数
    return x if x > y else y
print(my_max(10,11))     #实参

    默认参数
      默认参数必须放在形参的位置参数后面
      默认参数不传值则为默认值,传值则覆盖默认值。

def my_max(x,y=100):      #x ,y 形参,形式参数
    return x if x > y else y
print(my_max(10,11))     #实参

print(my_max(10)) #实参
 

    动态参数

用户传入到函数中的实参数量不定时,或者是为了以后拓展,
此时要用到动态参数*args,**kwargs(万能参数。)
*args接收的是所有的位置参数。
**kwargs接收的是所有的关键字参数。

1 def func1(*args, **kwargs):
2     print(args)
3     print(kwargs)
4 
5 func1(1, 2, 3, 4)
6 func1(x=4, y=5, z=6)
7 func1(1, 2, 3, x=4, y=5, z=6)
位置参数,*args,默认参数, **kwargs
def func2(a, b, *args, sex='',age=20, **kwargs):
    print(a)
    print(b)
    print(args)
    print(sex)
    print(age)
    print(kwargs)
func2(1, 2, 5, 6, 7, 8, 9, x=6, y=5, name='alex')
def func3(*args,**kwargs):  # 函数的定义 *用意是聚合。
    print(args)  # (1,2,3,11,21,32)
    print(kwargs)

tu2 = (11, 22, 33)
func3(*l1, *tu1, *tu2)  #在函数的执行时,*的用意是打散。

dic ={'name': 'alex'}
dic1 ={'age': 1000}
func3(*l1, **dic, **dic1)  #在函数的执行时,**的用意是打散。
原文地址:https://www.cnblogs.com/eailoo/p/9014315.html